Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)

以前写过一个程序,发现用断点调试的时候,一步步的运行,程序是可以的,但是去了断点程序就出现了问题。

 $(document).ready(function(){

      var arra=new Array();

      $.post("/getdata",null,function(data){

          for(var i=0;i

               arra.push(data);

          }

    });

    $("#item").val(data[0]);

});

发现自己犯了一个错误。首先,看一下$.post与$.ajax

$.post其实是$.ajax的特写,真正的形式为

$.ajax({ 
            url: "/getdata", 
            type: "post", 
            data: null,

            cache:false,

            async:true,
            contentType: "application/json;charset=utf-8",  
          success:function(data){

          } 

});

ajax默认请求为异步的,也就是默认将async设置为true.对上面的程序进行修改:async 参数设置为 false

 $(document).ready(function(){

      var arra=new Array();

     $.ajax({ 
            url: "/getdata", 
            type: "post", 
            data: null,

            cache:false,

            async:false,
            contentType: "application/json;charset=utf-8",  
           success:function(data){       

              for(var i=0;i

                   arra.push(data);

               }

          } 

   });

    $("#item").val(data[0]);

});

 

note: 若使用默认的异步模式,发送ajax异步后,在等待server端返回数据的过程中,前段程序会继续执行ajax块之后的内容,直到server返回结果。这段时间中,程序拥有多个执行的线程,这样可以适当的提高性能和用户体验。而使用同步方式时,发送ajax请求后,程序会一直等待server端,直到server端返回数据。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值