IE 11的奇怪的AJAX错误

Dav*_*veo 24 javascript ajax jquery internet-explorer

我目前正在开发一个纯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
    }
});
Run Code Online (Sandbox Code Playgroud)

在网络选项卡和使用Fiddler我可以看到IE甚至从未发送请求.

有没有人有任何想法吗?

编辑:我忘了提到我已经尝试过缓存:false.我还发现了一些非常奇怪的事情,如果我将开发工具中的文档模式从Edge切换到9然后再次调用,即使在我清除IE并重新启动它之后,无论缓存是真还是假,调用都会有效.非常离奇.:\

Shy*_*yju 33

IE以缓存而闻名.确保您没有获得缓存响应.您可以将cache属性值设置为false或向URL添加唯一的时间戳,以使其不是缓存的响应.您可以使用该$.now()方法获取唯一的时间戳.

设置缓存属性

$.ajax(url, {
    dataType: 'json',
    cache : false,
    //Other things ...
}
Run Code Online (Sandbox Code Playgroud)

向URL添加唯一时间戳

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

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


Bla*_*Ops 5

我不确定,也许是缓存,尝试设置属性"cache:false"

否则,你也可以尝试在你的网址末尾添加一个日期时间,这样你每次都有一个不同的网址,IE不会缓存

url +""+ (new Date()).getTime()
Run Code Online (Sandbox Code Playgroud)