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

Jquery等待ajax執行完畢繼續執行(斷點調試正常,運行異常)

.ajax cti cati 時間 utf 一個 ajax 發現 not

以前寫過一個程序,發現用斷點調試的時候,一步步的運行,程序是可以的,但是去了斷點程序就出現了問題。

$(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執行完畢繼續執行(斷點調試正常,運行異常)