Jac*_*own 5 ajax jquery internet-explorer jsonp
除非请求dataType设置为"jsonp"或"script",否则不会在IE9中执行跨域AJAX请求(使用jQuery 1.7.2创建).
我在构建请求时发现了这个问题,我不关心响应,并且未指定dataType(是的,我知道我应该关心响应).
所以,例如,这将工作:
$.ajax({
url: "http://www.google.com",
type: "GET", // or "POST"
dataType: 'jsonp'
});
Run Code Online (Sandbox Code Playgroud)
但这不会:
$.ajax({
url: "http://www.google.com",
type: "GET" // or "POST"
});
Run Code Online (Sandbox Code Playgroud)
通过"工作"我的意思是我看到在Firebug或F12中发出的HTTP请求.
这两个请求都适用于其他浏览器 设置jQuery.support.cors = true;不会影响成功,也不会将crossDomain设置为true,也不会将cache设置为false(在AJAX请求中).
为什么AJAX请求的成功取决于IE中请求的dataType?我能理解为什么它会影响我处理任何返回数据的能力; 我也理解一些服务器可能会拒绝对某个dataType的所有请求(但这显然不是这种情况).
这不是数据类型的问题,而是在浏览器中明确验证服务器是否确实想要回答此查询的问题。
通过实施JSONP,您可以强制服务器提供非常具体的答案(包括方法调用)。
请注意,现在还有其他解决方案:您可以在服务器上设置特定标头(请参阅https://developer.mozilla.org/en-US/docs/HTTP_access_control)