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已经过时了,但是对于那些遇到此问题的人来说,请检查您的“受信任的站点区域”设置是否允许跨域访问。 “杂项”下的第一个设置是您想要的设置。
将“跨域访问数据源”设置为“启用”。