C# Jquery Ajax请求在IE 10上不起作用(由于缓存)
我想从这个开始。我受够了IE。我的代码如下:C# Jquery Ajax请求在IE 10上不起作用(由于缓存),c#,jquery,internet-explorer,asp.net-mvc-4,C#,Jquery,Internet Explorer,Asp.net Mvc 4,我想从这个开始。我受够了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', "#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()
调用,您需要重新附加事件,这就是为什么我在JQuery 1.7中使用on()
。我也使用了delegate()
。在FF中,它按预期工作。在IE 10中,它不是。我不知所措。我知道IE在IE8和JQuery<1.5中与委托有问题,但事实并非如此
有人知道如何解决这个问题吗?我回答这个问题只是为了将来供其他人参考。IE缓存AJAX请求似乎是出于某种我无法理解的原因 我注意到,使用IE10提供的开发工具(出人意料地好),我得到了对AJAX请求的304而不是修改的响应。Firefox和Chrome的情况并非如此(200是响应) 我在AXAJ JQuery函数中添加了
cache:false
选项,现在它可以正常工作了
我从来没有抓住过使我吃惊的东西 简单的补充,考虑到我对这个问题的了解(很少)。显然,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响应具有
缓存控制:max age
,则上述所有修复都将无效。第一个请求将获取数据,但在此之后,所有请求(即使您添加了随机属性)都将无效
在这种情况下,IE甚至不会询问服务器内容是否更改,它只是假设如果它有max age
,那么执行请求就没有意义
此外,XHR规范说304不应该传递任何数据,因此基本上你会得到一个帖子的空响应(仅在IE 9和10上)。这有帮助吗?没有,我将此代码加载到另一个文件中,该文件使用Scripts.Render(“~Scripts/calendarJS.js”)加载因此,这不是类型的问题。我还添加了文档加载,但仍然没有。这是一个很棒的+1。
:)