jQuery的Ajax请求不工作的IE浏览器10(由于高速缓存)(Jquery Ajax reque

2019-08-18 09:21发布

我想首先这一点。 我受够了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,但这种情况并非如此。

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

Answer 1:

我回答这个问题只是其他人将来参考。 看来,IE缓存是出于某种原因,我无法理解AJAX请求。

我注意到使用(出奇的好)的开发工具IE 10条规定,我得到我的AJAX请求304不修改响应。 这不是在Firefox或铬的情况下(200是响应)。

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

IE从来没有抓住给我带来惊喜。



Answer 2:

简要此外,考虑什么(小),我理解的问题。 显然,XmlHttpRequest的规范说XHR GET命令可以表现就像一个标准的网页检索(如点击一个普通的旧链接),因此XHR GET命令可以被缓存。 IE团队却选择了坚持这一规范,而其他浏览器制造商都没有。 虽然我可以在这种方法中看到一些逻辑,我觉得我们这些谁与XHR请求每天的工作会强调说,我们希望通过缓存默认情况下处于关闭状态,而不是。 ( - ;



Answer 3:

我就遇到了这个很久很久很久以前用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
        }

    }); 

});


Answer 4:

得到这个问题了。 事实证明,如果POST响应具有上述所有修补程序将无法正常工作cache-control: max-age 。 第1请求将获取的数据但在那之后所有的请求(即使你添加一个随机属性)将被304'd。

在这种情况下,IE浏览器甚至不会要求服务器如果内容改变,它只是假设,如果它有一个max-age再有就是在做一个请求是没有意义的。

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



文章来源: Jquery Ajax requests not working on IE 10 (due to cache)