0

AJAX を使用してサーバーへの HTTP 要求を作成しようとしていますが、サーバーには 2 つの curl 要求があります。

そのうちの 1 つがより高速になります。JSON をフロントエンドに送信するだけで、もう一方の応答に別の JSON を送信させることができますか? AJAX を介して最初と 2 番目の JSON を取得するにはどうすればよいですか?

ありがとうございました。

4

2 に答える 2

1

基本的に、Ajax の最初の A は非同期用であるため、2 つの異なる要求を開始し、それらが並行して実行されることを期待することがデフォルトです。各呼び出しには、両方の要求が終了した場合にページ上の状態オブジェクトをチェックできる callbackhandler があります。したがって、魔法はコールバック ハンドラで発生する必要があります。

それが役立つことを願っています。

于 2012-11-12T22:43:51.380 に答える
1

リクエストは 1 つだけ (AJAX を介して起動) されますが、そのリクエストに対する (サーバーからの) レスポンスは 2 つです。出来ますか?

いいえ、それは不可能です。HTTP は要求応答プロトコルです。リクエストごとに 1 つのレスポンスが返されます。ただし、ページのユーザーは、複数のリクエストが送信されたことを知る必要はありません。彼らは気付かないでしょう。

サーバー側で修正できます。サーバー側は 2 つのリクエストをフェッチし、それらが完了するまで待ってから、2 つのうち 1 つの回答を作成する必要があります。その組み合わせた回答をクライアントに送信できます。このようにして、クライアントとサーバー間に 1 つの要求応答があり、サーバーとサード パーティ間に 2 つの要求応答があります。

明確にするために、これはあなたが得るものです:

 browser          server            3rd party
          request
   |---------------->|
   |                 | proxy
   |                 |       req1
   |                 |----------------->| 
   |                 |<-----------------|
   |                 |       req2
   |                 |----------------->|
   |     response    |<-----------------|
   |<----------------|

私の最初の仮定は、あなたがやりたいことでした:

 browser          server            3rd party
          request
   |---------------->|
   |                 | proxy
   |                 |       req1
   |                 |----------------->| 
   |      response   |<-----------------|
   |<----------------|
   |                 |
   |      request    |
   |---------------->|
   |                 |       req2
   |                 |----------------->|
   |     response    |<-----------------|
   |<----------------|

これは(要件に応じて)次のように圧縮できます。

 browser          3rd party
          request
   |---------------->|
   |      response   |
   |<----------------|
   |                 
   |      request    
   |---------------->|
   |     response    |
   |<----------------|

これははるかに簡単です。

(私の最後の回答に対するコメントへのコメントとしてこれを入力し始めましたが、少し複雑になるため、別の回答にしています。申し訳ありません。)

于 2012-11-13T09:31:27.673 に答える