1

Internet Explorer は、AJAX 送信の履歴を処理するための pushState をサポートしていない唯一の主要なブラウザーのようです。だから私が持っているどこでも:

$.bbq.pushState(hash);

私の AJAX コードでは、次の行を追加する必要があります。

$.ajax(hash);

もちろん、これにより、pushState() による送信をサポートするすべての非 IE ブラウザーで二重送信が発生します。

この二重提出を避けるにはどうすればよいですか?

4

1 に答える 1

2

がネイティブにサポートさ$.ajax(hash);れていない場合にのみ、条件文を呼び出すだけです。history.pushState

if (!history.pushState) {
   $.ajax(hash);
}

また、必要なロジックを備えたパラメーターとしてハッシュを受け入れる独自のラッパー関数を使用して、コードをリファクタリングすることもお勧めします。

var pushStateWrapper = function(hash) {

    if (!history.pushState) {
       $.ajax(hash);
    }
    else {
       $.bbq.pushState(hash);
    }
}
于 2012-04-05T14:25:32.613 に答える