2

サーバーへの ajax 要求があり、ユーザーを 2 番目のページにリダイレクトするのがいつ終了するかを知る必要があるだけです。ほとんどの場合は機能していますが、サーバーが応答するのに時間がかかりすぎる場合 (たとえば 10 分)、コールバック関数が呼び出されず、要求が待機し続けることがあります。

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

$.ajax({
      type: 'post',
      url: 'request.php',
      success: function(data) {
            alert("Success: "+data);
            window.location.replace("success.php");
      },
      error: function (xhr, ajaxOptions, thrownError) {
            alert("Ajax error: "+xhr.status+" - "+thrownError);
            window.location.replace("error.php");
      }
});

ご覧のとおり、エラーがあるかどうかを確認しようとしましたが、到着した限り、ajax リクエストは終了していないかのように動作します (アラートやリダイレクトは発生しません)。ただし、サーバー内の PHP コードは最後までエラーなしで実行されます。

ブラウザとサーバーの両方でタイムアウトの問題を考えていたので、どこでエラーを検索すればよいかわかりませんが、それが原因ではないようです。同じコードが短い待機時間で機能しているため、他の考えられる理由は想像できません。

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

4

1 に答える 1

1

接続を無効にする Web サーバーのタイムアウトに賭けます。これは、応答が返されないことを意味する可能性があります。その場合、ajax タイムアウト オプションが適している場合があります。

そうは言っても、私があなただったら、これを別の方法で行うでしょう: あなたはすでに ajax を使用しているので、接続を開いたままにするのではなく、x 秒ごとにサーバーに ping を実行して、プロセスが終了し、リダイレクトする時が来たかどうかを確認してください。 ? この方法では、タイムアウトの問題がなく、データを送信せず、サーバー側のプロセスが終了するのを待つだけのセッションで接続を保持しません。よりスケーラブルで堅牢で、http 接続により適しています。

于 2013-02-10T19:01:17.897 に答える