1. 程式人生 > >Jquery等待ajax執行完畢繼續執行(斷點除錯正常,執行異常)

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端返回資料。