1. 程式人生 > >傳送ajax請求後收不到響應

傳送ajax請求後收不到響應

向後臺傳送ajax請求,判斷伺服器處理完成後繼續處理,結果發現一直獲取不到處理完成狀態程式碼如下:

xmlHttp.onreadystatechange = callback;
xmlHttp.open("GET", "AJAXServletClient?userName="
+ $("#description").val(), true);
xmlHttp.send(null);
if (xmlHttp.readyState != 4) {
alert("請求未處理完成");
}
else {
if (xmlHttp.status == 200) {
var responseText = xmlHttp.responseText;


var divNode = document.getElementById("desc");
divNode.innerHTML = responseText;
}
else {
alert("請求錯誤");
}
}


原因分析:以上程式碼設定開關為true代表非同步,那麼前臺執行send方法後js就繼續執行,這時候自然收不到伺服器執行完成的響應,狀態碼也不會是200,而是0.

修改方法1:把true改為false,代表同步,即js執行send會等待伺服器執行完才會繼續執行。

方法2:把根據響應狀態和狀態碼判斷執行邏輯的程式碼放到回撥函式 callback中,代表服務端執行完畢後在回撥函式中執行。