3
  1. ユーザーが ajax リクエストを実行するリンクをクリックすると、このリクエストに 20 秒かかるとします。
  2. リクエストが完了する前に、ユーザーはページ全体を (Ajax なしで) 別のページにリダイレクトする別のリンクをクリックします。

ajax リクエストはどうなりますか? サーバー側で常に完了しますが、応答はどこにも来ませんか? あるいは、サーバー側の ajax リクエストが即座に「殺される」のではないでしょうか?

実行に時間がかかるスクリプトがあるのでお願いしますが、ユーザーは結果を得る必要はありません-それは単に起動して忘れるだけです-おそらくajaxには、応答を送信しないようにするためのオプションさえありますか?

4

2 に答える 2

5

ブラウザーは AJAX 要求を強制終了し、サーバーへの接続を閉じます。ただし、これはサーバーでの処理も強制終了されるという意味ではありません: ignore_user_abort()

于 2012-05-27T13:17:56.203 に答える
2

サーバーは、クライアントが「先に進んだ」ことを認識せずに、要求を完了します。サーバーは、通常どおりクライアントに応答を返します。クライアントは単に応答を無視します。

したがって、サーバー側のすべてが通常どおりに発生することを期待してください。そのため、「ファイア アンド フォーゲット」方式が機能します (クライアントが移動して「忘れた」ため)。しかし、応答でクライアント側で何かをしたい場合 (「忘れる」部分を無効にする)、新しいページが応答を傍受する方法はありません。ブラウザはそれを無視します。

于 2012-05-27T13:17:56.380 に答える