我們來看這樣一段代碼:
$(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了。這樣有什麼啟發呢?比如我們需要等到傳回值在頁面繪制一些元素,如果是異步的話,有可能繪制出來的東西是空的。