私は本当に説明できない状況に遭遇し、ブラウザがどのようにAJAXリクエストを処理しているかを誤解していると思うようになっています。ブラウザがタブ間でAJAXリクエストを処理する方法
参考までに、私はCodeigniterをApacheサーバー上で実行していて、jQueryを使用してAJAXリクエストを実行していると仮定できます。問題のブラウザはChromeです。
私のアプリケーションには、いくつかの異なるグラフを表示するためのページがあります。このページに移動すると、ページに表示されるグラフに関する特定の情報が、URLのGET
パラメータとしてサーバーに渡されます。これらのパラメータは、いくつかのデータの弾性検索クエリを起動し、操作され、クライアントに戻ってグラフを描画します。このアプローチは、1ページをレンダリングするときに問題なく動作します。
ただし、いくつかのタブが開いている場合。 5つまたは6つのタブを開いて、別のグラフを表示する必要があるとします(いくつかのことは予測できません)。タブのいくつかは同じデータをレンダリングします。何らかの理由で複数のタブを開いているのではないかと思います。 Chromeは複数のタブでAJAXレスポンスを受信しています。応答が返ってくるのを見て、正しい応答であるかどうかにかかわらず各タブに送信します。これにより、複数のタブにまたがってグラフが表示されます。
私が持っている主な質問は、クロム(または他のブラウザ)が複数のタブ間でどのように接続を処理するかということです。セッションを永続させることができるので、明らかにそれを単一の接続として扱います。また、AJAXリクエストはどのように識別されていますか?ユニークな識別子を渡して試してみてください。しかし、ブラウザが返された最初の応答を受け取り、それを受け入れているかのように見えるので(それがうまくいくかのように)、動作しないように見えます。混乱し、複数のタブを開いて応答を待っているときに接続が確立されていることを認識していますか?
多くの疑問がありますが、誰かがこれを解決する方法についての洞察や助けを提供できれば非常に感謝します。
編集:この動作を防止し、要求元のタブに固有のデータを正しく受信する方法に最も興味があります。
何か他のことが起こっている必要があります。ブラウザは、異なるAJAXリクエストごとに一意のイベントリスナを作成します。実際の要求と応答を表示するには、デバッガの[ネットワーク]タブを使用します。多分、あなたのリクエストはキャッシュされていますか? – dave
これは私がチェックしてきたものです。私はリクエストがラインのどこかにキャッシュされていると仮定し、それを止めるためにできること全てをしようとしていましたが、それは何とかして永続しています。 – pipedreams2
この問題はChromeでのみ発生していますか? –