応答の個々の状態を表示するために ajax 要求関数を更新しようとしています。
ただし、リクエストを送信した後に取得するのは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;
}