Jquery Ajax请求不在IE 10上工作(由于缓存)

我想从这开始。 我厌倦了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但是情况并非如此。

有谁知道如何解决这个问题?

我正在回答这个问题,以供将来参考。 似乎IE正在缓存AJAX请求,原因是我无法理解。

我注意到使用IE 10提供的(令人惊讶的好)开发人员工具,我得到了一个304未修改的响应我的AJAX请求。 在Firefox或Chrome中并非如此(响应为200)。

我为我的AXAJ JQuery函数添加了cache: false选项,现在它按预期工作。

IE永远不会抓住我的惊喜。

简要补充,考虑到我对这个问题的理解(很少)。 显然,XmlHttpRequest规范说XHR GET命令的行为就像标准的网页检索(例如,点击常规的旧链接),因此可以缓存XHR GET命令。 IE团队已选择遵守此规范,而其他浏览器制造商则没有。 虽然我可以在这种方法中看到一些逻辑,但我认为我们这些每天使用XHR请求的人会强调说我们宁愿在默认情况下关闭缓存,而不是依赖缓存。 ( – ;

很长一段时间以前我和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 } }); }); 

也遇到了这个问题。 事实certificate,如果POST响应具有cache-control: max-age ,则上述所有修复都将无效。 第一个请求将获取数据但在此之后所有请求(即使您添加随机属性)将为304’d。

在这种情况下,IE甚至不会询问服务器内容是否发生了变化,它只是假设如果它有一个max-age那么就没有必要做一个请求了。

此外,XHR规范说304不应该传递任何数据,所以基本上你得到一个POST的空响应(仅在IE 9和10上)。