2

.NETWebメソッドに対して同時に非同期で起動するいくつかのjQueryajax呼び出しを含むWebページがあります。

これらのWebメソッドは、各.ajax呼び出しの成功コールバックによって処理されるデータを返します。

私の質問はおそらく低レベルです。jQuery / Javascriptは、どのデータがどの.ajax呼び出しに戻るかをどのように知るのですか?ネットワークスニファを使用してリターンパケットを確認しましたが、発信元のコールにリンクするために使用できるIDは見つかりませんでした。私の推測では、それはjqXHRオブジェクトに関係しています。応答パケットに含まれていると、スニファーに表示されません。

技術的な説明が役立つ場合があります。

追加: サーバー側で非同期メソッドを使用するため、これを求めています。.ajaxが最初に呼び出したメソッドは、データを返すメソッドではありません。別のスレッドが作業を行っています。

4

5 に答える 5

5

ブラウザーが Web サーバーから複数の画像を要求し、各画像をページのどこに配置するかを知るのと同じ方法です。これは HTTP プロトコルの一部です。ブラウザはリクエストを送信し、レスポンスは同じ TCP ソケットで送信されます。ブラウザが複数のオブジェクトを同時に待機している場合、複数の TCP ソケットが開いています。

パケット スニファーで、TCP ポート番号、特に応答ポート (80 以外のポート) をよく見てください。

お使いのブラウザーと Web サーバー/フレームワークは正しいことを行います。サーバー側では、適切なリクエストに応答を送信するようにしてください。受信した注文や処理にかかった時間に関係なく、jquery の適切な場所に返されます。サーバー上で複数のスレッドがデータを交換している場合、必要以上に生活が困難になっているため、自分が何をしているのかを理解する十分な理由があると思います。

于 2011-04-07T19:39:02.513 に答える
1

それはクロージャーと呼ばれる概念によるものです。簡単に言えば、AJAX 呼び出しには常に成功コールバックへの参照があります。

function ajax(params, callback){
    // fire off AJAX call
    // on response:
    callback(data);
}

ajax を複数回呼び出すとcallback、それぞれの新しい変数になります。私は何年も前にコンセプトに関する記事を書きました

于 2011-04-07T19:37:22.867 に答える
1

この投稿には、あなたが探している情報が含まれている可能性があると思います。HTTP 要求と応答は、交換と呼ばれるプロセスを介してペアになります。

HTTP リクエスト + レスポンスの名前

XMLHttpRequests は、リクエスト後に HTTP ステータス コード (200、304、500 など) と readyState をブラウザに返します。jQuery ajax は XMLHttpRequest を使用して、成功したコードと失敗したコードを判別します。

https://developer.mozilla.org/En/Using_XMLHttpRequest

http://api.jquery.com/jQuery.ajax/

于 2011-04-07T19:28:17.200 に答える
0

AJAX 呼び出しが行われると、jQuery は基になるオブジェクトへの内部参照を作成しXMLHTTPRequest、イベント ハンドラーをそのオブジェクトにバインドします。

于 2011-04-07T19:38:05.140 に答える
0

ライブラリなしでXMLHttpRequest オブジェクトを使用したことがありますか? やってみるとわかりやすいです。10 行のコードを書いて、それがどのように機能するかを確認することをお勧めします。

サーバーに対して行う要求ごとに、XMLHttPRequest オブジェクトのインスタンスを作成します。4 回呼び出される onreadystatechange イベント ハンドラーを割り当てます。readystate が 4 になると、完了です。JQuery の状況では、完了時にコールバック関数が呼び出されます。

于 2011-04-07T19:39:23.283 に答える