jQuery$.ajax
メソッドでAjaxレディ状態を呼び出す方法は?
3 に答える
$.ajax()
XmlHttpRequestオブジェクトを返すため、状態の変化に応じて本当にアクセスしたい場合は、次のように実行できます。
var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };
success
ただし、組み込みのコールバックは、ほとんどの用途、特にとに必要なすべてのものである必要がありますcomplete
。
リクエストが発生する前に処理を行うにはbeforeSend
、ほとんどの場合、.ajaxStart()
および.ajaxStop()
イベントを使用します。たとえば、ajaxアクティビティが発生するたびに読み込みメッセージを表示します。
メソッド、jQuery 2.0.2でテスト済み:
$.ajax({
beforeSend: function (jqXHR, settings) {
var self = this;
var xhr = settings.xhr;
settings.xhr = function () {
var output = xhr();
output.onreadystatechange = function () {
if (typeof(self.readyStateChanged) == "function") {
self.readyStateChanged(this);
}
};
return output;
};
},
readyStateChanged: function (xhr) {
if (xhr.readyState == 1) {
/* Connected! Do something */
}
},
url: "..."
});
基本的に、必要なのは(Connected)になった後のコールバックでしたreadyState
。1
これは、私の場合、jQueryを使用して長いポーリングの「プッシュ」通知を実装するときに役立ちました。
success
メソッドに渡すオブジェクトの、、、error
およびcomplete
オプションのコールバックを設定することで、必要なものをすべて取得できるはずですajax()
。ドキュメントを見てください:
http://api.jquery.com/jQuery.ajax/
基本的に、次のように機能します。
$.ajax({
url: 'ajax/test.html',
success: function(data) {
alert('Load was performed.');
},
error: function() {alert("error occurred.")},
complete: function() {alert("ajax complete.")}
});
コールバック関数でアクセスできるパラメーターの正確なドキュメントを確認できます。