9

jQuery$.ajaxメソッドでAjaxレディ状態を呼び出す方法は?

4

3 に答える 3

5

$.ajax()XmlHttpRequestオブジェクトを返すため、状態の変化に応じて本当にアクセスしたい場合は、次のように実行できます。

var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };

successただし、組み込みのコールバックは、ほとんどの用途、特にとに必要なすべてのものである必要がありますcomplete

リクエストが発生する前に処理を行うにはbeforeSend、ほとんどの場合、.ajaxStart()および.ajaxStop()イベントを使用します。たとえば、ajaxアクティビティが発生するたびに読み込みメッセージを表示します。

于 2010-11-05T16:45:56.740 に答える
5

メソッド、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)になった後のコールバックでしたreadyState1これは、私の場合、jQueryを使用して長いポーリングの「プッシュ」通知を実装するときに役立ちました。

于 2014-12-21T19:39:52.303 に答える
1

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.")}
});

コールバック関数でアクセスできるパラメーターの正確なドキュメントを確認できます。

于 2010-11-05T16:41:57.740 に答える