【发布时间】:2012-11-12 07:25:53
【问题描述】:
我在从 IE 中的 JSON 提要获取数据时遇到问题。
这是测试。它在 FF、Chrome、Safari 中发出警报,但在 IE 中没有:
function do_something(data){
alert(data);
}
$(document).ready(function() {
$.getJSON('https://www.mec.ca/api/v1/stores/1', do_something);
});
这是小提琴:http://jsfiddle.net/upksp/
我尝试了以下看似相关的问题的解决方案,但没有成功:
- 使用
$.ajax()代替$.getJSON():$.getJSON not workin in IE - 追加
&callback=?:$.getJson not working in IE
我不禁认为这可能是标题的问题,但对它们了解得不够多,无法诊断。我已经在同一页面上成功地使用了 JSONP,没有任何问题,而且我没有看到任何冲突。救命!
注意:对于我正在处理的代码,API 将与请求它的脚本位于同一域 (1)。但是对于测试,它们将具有不同的子域 (2),例如 www.domain.com 与 environment.domain.com。我假设 (2) 会有问题,但 (1) 会正常工作吗?
【问题讨论】:
-
您无法向其他域执行请求。 stackoverflow.com/a/8449129/251311
-
当对那个 JSON 文件进行 Ajax-request 时,服务器响应包含一个
access-control-allow-origin: http://fiddle.jshell.netHTTP-header,这意味着服务器使用 CORS 并返回请求的 Origin,允许所有跨域请求.但是,IE 不支持 CORS,但它确实为跨域 Ajax 请求提供了一种替代方法。在 IE 中有启用此功能的插件,例如gist.github.com/1114981 -
@zerkms CORS 在该特定服务器上启用。只是jQuery没有为IE提供CORS功能。跨域 Ajax 请求是可能的,或者当然是可能的,并且 OP 的代码在非 IE 浏览器中工作。
-
@Šime Vidas 谢谢大家!我会去看看这个插件是否是我的解决方案。该插件表示IE8+。这是否意味着 IE7 是 SOL?
-
MS 甚至不再支持 IE 7。 IE8也不是。或者IE9。或者 IE10 =) 唯一仍然支持的 IE 版本是 IE11。 年 前,其他一切都非常正式地达到了 EOL。当然,仍然带有 IE11 的企业或学术机器值得支持,但 IE7 真的,真的不支持。除非您使用的是 very exotic versions of Windows,否则肯定会在您的帖子中提及。
标签: javascript jquery ajax json getjson