13

これから始めたいと思います。私はIEにうんざりしています。私は以下のコードを持っています:

$(function () {
$("#cal").on('click', "#forward", function () {
    $.ajax({
        url: "Home/Calendar?target=forward",
        type: "GET",
        success: function (result) {
            $("#cal").html(result);
        }
    });
  });
});

 $(function () {
$("#cal").on('click', "#backwards", function () {

    $.ajax({
        url: "Home/Calendar?target=backwards",
        type: "GET",
        success: function (result) {
            $("#cal").html(result);
        }
    });
});
});

これは、C# MVC アプリケーションのコントローラー アクションへの ajax 呼び出しです。カレンダーの月を行ったり来たりするだけで、html が置き換えられます。html()呼び出しのためにイベントを再アタッチする必要があることがわかりました。そのためon()、JQuery 1.7 を使用しています。私も使っdelegate()たことがあります。FF、Chromeでは意図したとおりに動作します。IE 10 ではそうではありません。私は途方に暮れています。IE が IE8 のデリゲートと JQuery < 1.5 に問題があることは知っていましたが、そうではありません。

これを解決する方法を知っている人はいますか?

4

4 に答える 4

2

この件について私が(ほとんど)理解していることを考えると、簡単に追加します。どうやら、XmlHttpRequest 仕様によると、XHR GET コマンドは標準的な Web ページの取得 (通常の古いリンクのクリックなど) と同じように動作できるため、XHR GET コマンドをキャッシュできるようになっています。IE チームはこの仕様に準拠することを選択しましたが、他のブラウザー メーカーは準拠していません。このアプローチにはいくつかの論理が見られますが、毎日 XHR リクエストを処理する私たちのような人は、デフォルトでキャッシングをオンにするよりもオフにした方がよいと断言するでしょう。(-;

于 2013-06-26T16:35:30.067 に答える
0

私はかなり前にIEでこれに遭遇しました...今では、ランダムな末尾のキーと値のペアを使用してajax呼び出しを記述することを常にポイントにしています。

cache: false私はまた、それ自体が常にすべきことをするとは限らないことを発見しましたが、追加します(まあ、IEがすべきことをしていないだけかもしれません)

これが私がそれらを設定する方法です...

$('#trigger').submit( function(e){

    e.preventDefault();

    var randnum = Math.floor(Math.random()*1001); //magic starts here

    $.ajax({
        type: "POST",
        url: "folder/file.php",
        cache: false,
        data: "random=" + randnum, //pure magic
        success: function(){
            // do stuff here
        }

    }); 

});
于 2013-10-18T04:30:17.297 に答える
0

この問題も取得しました。POST 応答にcache-control: max-age. 最初のリクエストはデータをフェッチしますが、その後はすべてのリクエストが (ランダムな属性を追加したとしても) 304 になります。

この場合、IE はコンテンツが変更されたかどうかをサーバーに尋ねることさえしませmax-ageん。

さらに、XHR 仕様では、304 はデータを渡してはならないため、基本的に POST に対して空の応答が返されます (IE 9 および 10 のみ)。

于 2014-02-25T09:46:41.113 に答える