1

IE 10 では発生せず、最近始まったばかりなので、これはクロムのバグであると確信していますが、基本的に、URL への AJAX 呼び出しを行い、ユーザーが要求中にブラウザーを更新すると、その後、同じ URL は失敗します。ブラウザを再度更新しても、リクエストは失敗します。私がそれを回避できる唯一の方法は、タイムスタンプを追加してすべてのリクエストを一意にすることですが、これはハックのようです。ここで何か不足していますか?

中止されたリクエストがある場合、これは二度と機能しません。

        $.getJSON("realTimeActivity/GetRealTimeData",
            function (result) {
                // Do stuff
            }
        ).fail(function (jqXHR, textStatus, errorThrown) {
            // No error message comes back
        })

それでも、これは毎回機能します:

    $.getJSON("realTimeActivity/GetRealTimeData?u=" + (new Date).getTime(),
        function (result) {
            // Do stuff
        }
    ).fail(function (jqXHR, textStatus, errorThrown) {
        // No error message comes back
    })

そのままにしておくこともできますが、なぜこれが必要であり、このハックが必要ないのかを理解したいと思います。

4

1 に答える 1

2

これはキャッシュのためであり、URL が以前と同じであるため、無視されます。タイムスタンプを追加することで、URL が異なり、各リクエストが通過します。

もう 1 つのオプションは、(.ajax() を使用して) キャッシュを false に設定することです。これは興味深いことに、単にタイムスタンプを追加するだけです。

.ajax() ドキュメント

$.ajax({
    /* ... */
    cache: false
});
于 2013-09-10T18:08:11.387 に答える