IE 11的奇怪的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以缓存而闻名。 确保您没有获得缓存响应。 您可以将cache属性值设置为false也可以向URL添加唯一的时间戳,以使其不是缓存的响应。 您可以使用$.now()方法获取唯一的时间戳。

设置缓存属性

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

向URL添加唯一时间戳

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

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

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

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

 url +""+ (new Date()).getTime() 

在头部标签中使用它

  

如果您正在运行本地,请尝试将crossDomain切换为false。 我花了很多时间坚持下去。 Chrome处理了crossDomain,但是在IE中,如果你没有使用crossDomain并且你将它设置为true,它将无声地失败。

我知道这个post已经过时了,但是对于那些遇到此问题的人来说,请检查您的“受信任的站点区域”设置是否允许跨域访问。 “杂项”下的第一个设置是您想要的设置。

将“跨域访问数据源”设置为“启用”。