ajax回撥函式執行順序帶來的同步非同步問題

xinyuan_java發表於2014-09-30
我們來看這樣一段程式碼:

$(function(){

var a =0;

$.getJSON(

   "student_toadd",

    {stunum:10},

    $.each(status,function(i){

           ........................

          a=10;

          .............................

   });

)

alert(a);

});

 

你說說看彈出的a是多少?我說:有可能是10,有可能是0。

為毛?

因為ajax的執行是非同步的,有可能回撥函式還沒有拿到返回值,就彈出a了。

 

解決辦法

var a = 0;

$.ajax({
          type: 
"get",

         dataType: "json",

        async: false    // 非同步為false

         url: "student_toadd",

         data:{stunum:10},

         success:function(data){ a = 10;}

 });

alert(a);   

 

這表示,將$.ajax拿到返回值後,在執行後面的js。  

這樣a就是10了。

相關文章