跨域 AJAX 请求(使用 jQuery 1.7.2 生成)不会在 IE9 中执行,除非请求的 dataType 设置为“jsonp”或“script”。
我在构建一个我不关心响应并且未指定 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 或将缓存设置为 false(在 AJAX 请求中)。
为什么 AJAX 请求的成功取决于仅 IE 中请求的数据类型?我可以理解为什么它会影响我处理任何返回数据的能力;我也了解某些服务器可能会拒绝对某个数据类型的所有请求(但这里显然不是这种情况)。