我想首先这一点。 我受够了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);
}
});
});
});
这是一个AJAX调用在C#MVC的应用的控制器动作。 它只是来回日历月取代HTML。 现在我知道,你需要重新安装的情况下,由于html()
调用,这就是为什么我使用on()
使用jQuery 1.7。 我已经使用delegate()
为好。 在FF,铬它按预期工作。 在IE 10没有。 我很茫然。 我知道,IE浏览器曾与代理问题和IE8使用jQuery <1.5,但这种情况并非如此。
有谁知道如何解决这个问题?
我回答这个问题只是其他人将来参考。 看来,IE缓存是出于某种原因,我无法理解AJAX请求。
我注意到使用(出奇的好)的开发工具IE 10条规定,我得到我的AJAX请求304不修改响应。 这不是在Firefox或铬的情况下(200是响应)。
我添加了cache: false
选项我AXAJ JQuery的功能,现在它按预期工作。
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
}
});
});
得到这个问题了。 事实证明,如果POST响应具有上述所有修补程序将无法正常工作cache-control: max-age
。 第1请求将获取的数据但在那之后所有的请求(即使你添加一个随机属性)将被304'd。
在这种情况下,IE浏览器甚至不会要求服务器如果内容改变,它只是假设,如果它有一个max-age
再有就是在做一个请求是没有意义的。
此外XHR规格说,304的不应该通过任何数据,所以基本上你得到一个POST(只是在IE 9和10)的空响应。