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

Posted asdyzh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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端返回数据。











以上是关于Jquery等待ajax执行完毕继续执行(断点调试正常,运行异常)的主要内容,如果未能解决你的问题,请参考以下文章

JS如何等ajax执行完毕后再继续执行后续函数

ajax同步异步

如何使“主线程”等待“子线程”执行结束后再继续执行

线程池: 等待线程池内所有线程执行完毕后再继续任务

如何使“主线程”等待“子线程”执行结束后再继续执行

Perl 脚本不等待 .bat 文件完成并继续执行