小编典典

IE 11的奇怪AJAX错误

ajax

我目前正在开发一个纯粹的HTML和JavaScript驱动的Web应用程序,该应用程序使用CORS来使用远程Web服务,但目前在IE
11发出GET请求时遇到了麻烦。有趣的是,我们在IE8 / 9/10中可以正常运行,而不仅仅是11。

问题是IE 11似乎超时,而不是等待服务器的响应。ajax调用很简单:

$.ajax(url, {
    dataType: 'json',
    complete: complete,
    type: 'GET',
    global: true,
    success: success,
    crossDomain: true,
    xhrFields: {
        withCredentials: true
    }
});

在“网络”选项卡中,使用Fiddler,我可以看到IE从不发送请求。

请问有人有什么想法吗?

编辑
:我忘了提及我已经尝试过缓存:false。我还发现了一些非常奇怪的东西,如果我将开发工具中的文档模式从Edge切换到9,然后每次都可以再次调用,即使清除了IE并重新启动IE之后,无论缓存是true还是false,调用都可以。很奇怪
:\


阅读 180

收藏
2020-07-26

共1个答案

小编典典

IE以缓存闻名。确保没有收到缓存的响应。您可以将cache属性值设置为,false也可以将唯一的时间戳记添加到url,这样它就不会成为缓存的响应。您可以使用该$.now()方法来获得唯一的时间戳。

设置缓存属性

$.ajax(url, {
    dataType: 'json',
    cache : false,
    //Other things ...
}

为网址添加唯一的时间戳

var url="somePage.php?"+$.now();
//Use this url now for making the ajax call

$.now()方法是表达式返回的数字的简写(new Date).getTime()

2020-07-26