1

私はJQueryでAJAXをやっていますが、別のAJAXリクエストが切断された後に「onSuccess」イベントを実行する必要があります。

コードは次のとおりです。

    d.ajax({
        url: f.options.url.offline,
        dataType: "jsonp",
        jsonp: "callback",
        cache: false,
        data: {
            status: "offline",
            ticket: f.connection.options.ticket
        },
        success: function(g) {
            f._offlineSuccess()
        },
        error: function() {
            f._offlineError()
        }
    })

私のAJAXリクエストはすべてJSONPであり、上記のコードがトリガーされると、その間に別のAJAX接続(長いポーリングリクエスト、約10秒続く)がすでに確立されています。したがって、「f._offlineSuccess」関数は、別の AJAX 接続が切断された後に常に実行されます。

2 つの AJAX リクエスト間の関係がわかりません。また、別の AJAX 接続が停止した後に「onSuccess」関数を実行する必要がある理由もわかりません。

どんな助けでも大歓迎です〜

================================

更新しました:

同時に2つのJSONP接続がある場合、「onSuccess/onFailure」機能がブロックされることがわかりました。誰かが以前に同じ問題に遭遇したかどうかわかりませんか?

4

2 に答える 2

2

Ajax リクエストは非同期です。そのため、新しいリクエストは前のリクエストが完了するわけではありません。その動作が必要な場合は、async パラメータを false に設定するか、complete() 関数を使用して別のリクエストを呼び出します。これは、最初のリクエストが終了したときにのみ発生します。

UPDATE JsonPの場合、 jQuery.getJSON()を使用し、呼び出しが成功した場合はコールバックで 2 番目の要求を実行します。

function (data, textStatus) {
    // data will be a jsonObj
    // textStatus will be one of the following values: 
    //   "timeout","error","notmodified","success","parsererror"
    this; // the options for this ajax request
}
于 2009-08-08T10:24:39.860 に答える
0

firebug - net タブを使用すると、2 つの jsonp リクエストの完全な URL を表示できます。URL の末尾にコールバック関数名が表示されるはずです。これらは異なっていますか、それとも同じですか?同じだとしか思えません。

于 2009-08-08T10:04:35.127 に答える