除非请求dataType设置为“jsonp”或“script”,否则不会在IE9中执行跨域AJAX请求(使用jQuery 1.7.2创建)。
我在构建请求时发现了这个问题,我不关心响应,并且未指定dataType(是的,我知道我应该关心响应)。
因此,例如,这将起作用:
$.ajax({
url: "http://www.google.com",
type: "GET", // or "POST"
dataType: 'jsonp'
});
但这不会:
$.ajax({
url: "http://www.google.com",
type: "GET" // or "POST"
});
“工作”是指我在Firebug或F12中看到HTTP请求。
这两个请求都适用于其他浏览器。设置jQuery.support.cors = true;
不会影响成功,也不会将crossDomain设置为true,也不会将cache设置为false(在AJAX请求中)。
为什么AJAX请求的成功取决于IE中请求的dataType?我能理解为什么它会影响我处理任何返回数据的能力;我也理解一些服务器可能会拒绝某个dataType的所有请求(但这显然不是这种情况)。
答案 0 :(得分:1)
这不是数据类型的问题,而是在浏览器中清楚地验证服务器是否真的想要回答此查询。
强制JSONP强制服务器有一个非常具体的答案(包括方法调用)。
请注意,现在有其他解决方案:您可以在服务器上设置特定标头(请参阅https://developer.mozilla.org/en-US/docs/HTTP_access_control)
答案 1 :(得分:0)
如果您正在执行跨域ajax调用以处理表单帖子而不重新加载页面,则将数据类型设置为“script”对我有效。
我会对信息的可靠链接非常感兴趣,以了解更多信息。我把头发拉了几天不明白为什么除IE9之外的所有浏览器都在工作。
@dystroy甚至在放入标题之后,允许FF工作但在IE9中没有产生差异,直到我使用脚本数据类型
答案 2 :(得分:-2)
您不必为此编写长脚本。只需在下面添加此代码即可看到神奇的效果。
$(document).ready(function(){
jQuery.support.cors = true;
// call your other functions below.....
})