我目前正在开发一个纯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甚至从未发送请求。
有人有任何想法吗?
编辑:我忘了提到我已经尝试过cache:false。我还发现了一些非常奇怪的事情,如果我将开发工具中的文档模式从Edge切换到9然后再次调用,即使在我清除IE并重新启动它之后,无论缓存是真还是假,调用都会有效。非常离奇。 :\
答案 0 :(得分:32)
IE以缓存而闻名。确保您没有获得缓存响应。您可以将cache
属性值设置为false
,也可以为网址添加唯一的时间戳,以便它不会是缓存的响应。您可以使用$.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()
答案 1 :(得分:5)
我不确定,也许是缓存,尝试设置属性“cache:false”
否则,您也可以尝试在网址末尾添加日期时间,这样每次都有不同的网址,IE就不会缓存
url +""+ (new Date()).getTime()
答案 2 :(得分:3)
在头部标签中使用
<meta http-equiv="X-UA-Compatible" content="IE=9,chrome=1">
答案 3 :(得分:2)
如果您正在运行本地,请尝试将crossDomain切换为false。我花了很多时间坚持下去。 Chrome处理了crossDomain,但是在IE中,如果你没有使用crossDomain并且你将它设置为true,它将无声地失败。
答案 4 :(得分:2)
我知道这个帖子已经过时了,但是对于那些遇到此问题的人来说,请检查您的“受信任的站点区域”设置是否允许跨域访问。 &#34;杂项&#34;下的第一个设置;是你想要的设置。
设置&#34;跨域访问数据源&#34;到&#34;启用&#34;。