2013-03-31 108 views
12

我想以此開始。我厭倦了IE瀏覽器。我有以下代碼:jquery Ajax請求無法在IE 10上工作(由於緩存)

$(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); 
     } 
    }); 
}); 
}); 

這是一個ajax調用一個C#MVC應用程序中的控制器動作。它只是在一個日曆的幾個月內來回更換html。現在我知道您需要重新附加該事件,因爲要撥打html(),這就是爲什麼我使用帶有JQuery 1.7的on()。我也使用了delegate()。在FF中,Chrome按預期工作。在IE 10中它沒有。我很茫然。我知道IE瀏覽器在IE8的代表和JQuery < 1.5中存在問題,但事實並非如此。

有誰知道如何解決這個問題?

+0

對此有幫助嗎? http://stackoverflow.com/questions/4100872/jquery-code-not-working-in-ie?rq=1 – Axarydax

+0

nope,我有這個代碼到一個不同的文件,我加載Scripts.Render(「〜腳本/ calendarJS.js「),所以它不是該類型的問題。此外,我加入文件加載,但仍然沒有任何 – idipous

回答

36

我正在回答這個問題,以供將來爲其他人蔘考。似乎IE瀏覽器正在緩存AJAX請求,原因是我無法理解。

我注意到使用(令人驚訝的是)開發人員工具IE 10規定我得到了一個304沒有修改的響應我的AJAX請求。在Firefox或Chrome中這種情況並非如此(200是響應)。

我在我的AXAJ JQuery函數中添加了cache: false選項,現在它按預期工作。

IE永遠不會讓我驚歎。

+4

IE是一個緩存怪物 – iGanja

+0

哦,這是一個偉大的+1。':)' – Jai

+1

確切的問題。確切的解決方案。很好。 +1 –

2

簡而言之,給出了什麼(小)我對這個問題的理解。顯然,XmlHttpRequest規範指出XHR GET命令可以像標準網頁檢索一樣運行(例如,點擊常規的舊鏈接),因此可以緩存XHR GET命令。 IE團隊選擇遵守這一規範,而其他瀏覽器製造商則沒有。雖然我可以看到這種方法的一些邏輯,但我認爲我們每天與XHR一起工作的人都會強調說,我們寧願緩存默認情況下關閉,而不是關閉。 ( - ;

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 
     } 

    }); 

}); 
0

也得到了這個問題。事實證明,上述所有修補程序將不起作用,如果POST響應有cache-control: max-age。第一個請求將獲取數據,但之後的所有請求(即使您添加一個隨機屬性)將被304'd。

在這種情況下,IE甚至不會問服務器內容是否改變,它只是假設如果它有一個max-age那麼沒有意義做請求。

此外XHR規範說,304不應該傳遞任何數據,所以基本上你會得到POST的空響應(僅在IE 9和10上)。