先问一下问题,用JS实现ajax请求,选择同步方式。这种情况下,会不会有某些浏览器不支持这种做法,也就是说不会等待同步执行完毕而继续执行下面的代码了?另外,在JS里,浮点a=0.00 是否可以写成 if(a==0)这种形式,会不会有某些浏览器不支持?这里如果用parseInt(a)不满足我的需求,那应该如何写?

解决方案 »

  1.   

    1.同步请求会等请求执行完成后再执行后面的内容,浏览器都支持。2.a=0.00,a其实就是false的意思,你可以
    if(!a){
        alert(1)
    }else{
        alert(2)
    }
    你那样写也可以,JS会做类型转换。
      

  2.   


    谢谢
    我贴一下代码说明一下
    if( pay == 0 ){
    $.ajax({
       type: "GET",
       url: ***********,
       dataType:"text",
       async: false,
       success: function(data){
    //************
    }
    });
                    //************
                    location.replace(**********);
    return false;

    }                //********
            
    return true;
    现在发现的情况是极少人运行时,pay是0.00时,但return的竟然为true,原因是什么?跟location.replace会不会有关系?
    我现在暂时把后面的 return true 放到了else里了。想知道原因
      

  3.   

    location.replace页面会跳转,后面代码都不执行了。
      

  4.   

    再补充一下,return是返回给form表单的onsubmit,问题就是没执行到location.replace,而是返回了true让表单跳转action
      

  5.   

    你在if前面把pay  alert出来
      

  6.   


    弹出是0.00,我刚才换成!pay这种写法,在火狐上试过是不行的,pay是从数据库里拿出来的, 未经过转型
      

  7.   

    0==0.00是为true的 貌似
    具体原因看不出来啊
      

  8.   

    把pay的赋值方式给出来看看
    如果是pay=0.00; 那么pay==0 pay===0 和!pay都是true
    如果是pay="0.00" 那么pay==0 true pay===0 false !pay false
      

  9.   


    //smarty,从数据库里拿出来的$order_info
    <input type="hidden" value="<{$order_info.pay_amount}>" name="pay_amount" id="pay_amount" />
    var pay_amount = $("#pay_amount").val();那应该是第二者,也就是字符串了,那我的写法是对的,pay==0。但出现极少数用户遇到不进入if(pay==0)这个分支,难道和浏览器有关?
      

  10.   


    用 Number 转一下吧
      

  11.   

    这里的图片加载和延迟加载都是用ajax传递json数据:http://www.hellbear.com/picturerecord/index.htmlhttp://www.hellbear.com/picturerecord/index.html