1008
汽車大全
ajax回調函數執行順序帶來的同步異步問題
我們來看這樣一段代碼:
$(function(){
var a =0;
$.getJSON(
"student_toadd",
{stunum:10},
function(json,status)
{
$.each(json,function(i){
$('#stuDiv').append("<div>學生學號:"+json[i].num+"</div>" );
}
.........................................
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(json,status)
{
$.each(json,function(i){
$('#stuDiv').append("<div>學生學號:"+json[i].num+"</div>" );
}
.........................................
a = 10;
);
});
alert(a);
這表示將$.ajax拿到返回值後,在執行後麵的js。這樣a就是10了。這樣有什麼啟發呢?比如我們需要等到返回值在頁麵繪製一些元素,如果是異步的話,有可能繪製出來的東西是空的。
最後更新:2017-04-02 22:16:26