我正在嘗試更新我的ajax請求函數以顯示響應的各個狀態。Ajax和readyState
然而,我發送請求後我得到的是readyState = 1
,然後它直接跳轉到readyState = 4
,我得到服務器的完整響應。
爲什麼我沒有準備好狀態2和3?
當我嘗試使用本地瀏覽器時,例如
xmlhttp2 = new XMLHttpRequest()
發送相同的請求得到我readyStates 1,2,3,4在我的回調:
xmlhttp2.onreadystatechange
但與JQuery的AJAX輔助功能沒有。爲什麼會發生這種情況?
這裏是我的代碼:
var jqXHR = $.ajax(
{
data: requestForm, //my json request
type: req_type, // could be post or get
url: script, // php script
async: true,
success: function(response,textStatus, xhr)
{
renderIt(response);
},
error: function(xhr, textStatus, errorThrown)
{
var errText = "<b>Error "+xhr.status+" : "+xhr.reponseText+" , "+textStatus+", "+errorThrown+" </b>";
$('#'+div).append(errText);
}
});
jqXHR.fail(function(data, textStatus, jqXHR)
{
var errText = "<b>Error "+jqXHR.status+" : "+jqXHR.reponseText+" , "+textStatus+", "+" </b>";
$('#'+div).html(errText);
});
switch(jqXHR.readyState)
{
case 1:
$('#'+div).html("\n<center> Connected to Server...<br/> <img src='images/loading.gif' height=30 width=30></center>\n");
break;
case 2:
$('#'+div).html("\n<center> Request Recieved...<br/> <img src='images/loading.gif' height=30 width=30></center>\n");
break;
case 3:
$('#'+div).html("\n<center> Receiving Responses.....<br/> <img src='images/loading.gif' height=30 width=30></center>\n");
$('#'+div).append(xhr.responseText);
break;
default:
$('#'+div).html("\n<center> Awaiting Results.."+jqXHR.readyState+"<br/> <img src='images/loading.gif' height=30 width=30></center>\n");
break;
}
你意識到switch語句只執行一次,對嗎? –
你是對的!如何綁定由readyState更改觸發的交換機代碼? – seedhom
使用readystatechange事件?但是請注意,不需要使用jQuery的ajax方法。 –