IE 11出现奇怪的AJAX错误
Strange AJAX bug with IE 11
我目前正在开发一款纯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并重新启动它之后,无论缓存是真是假。非常奇怪。:''
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()
在头内标签中使用此标签
<meta http-equiv="X-UA-Compatible" content="IE=9,chrome=1">
如果您正在运行本地,请尝试将crossDomain切换为false。我花了很多时间在这上面。Chrome处理了crossDomain,但在IE中,如果你没有使用crossDomain,并且你将其设置为true,它将自动失败。
我知道这个线程很旧,但作为对遇到这个问题的人的额外检查,请检查您的受信任站点区域设置是否允许跨域访问。"杂项"下的第一个设置是您想要的设置。
将"跨域访问数据源"设置为"启用"。
相关文章:
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- Angular JS中的通用Ajax错误处理-拦截器
- jQuery AJAX错误回调未运行
- AJAX错误状态代码500内部服务器错误
- Ajax错误检查-如果Ajax请求失败,如何防止内容发生更改
- 如何在Ajax错误上抛出404错误,以便指向默认的404行为
- 具有相同数据的Ajax错误(parserror:SyntaxError:JSON.parse:JSON数据的第1行第1列
- IE 11出现奇怪的AJAX错误
- 如何在响应时处理ajax错误
- 对ajax错误执行javascript函数
- Ajax 错误消息无法接受参数
- 保持花哨的盒子打开ajax错误
- 主干集合在调用 fetch() 时给出“未定义的 Ajax”错误
- 跨域 ajax 错误,因为 Vagrant 设置中的端口不同
- 国家气象局 JavaScript jquery ajax 0 错误
- 在 ajax 错误时,请缓存并稍后再试
- IE8 - 保证金和 Ajax 错误
- 如何禁用基于 ajax 错误响应的元素
- jquery ajax 错误 - 无法捕获错误
- Ajax 错误 只发送第一个请求