我在这个问题上花了好几个小时,我的伙伴们无法帮助我。他说这可能是一个跨站点脚本问题,可能是我的系统设置导致了这个问题,因为脚本在我的同事的机器上运行良好。
以下是一个简单的案例:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var req = new XMLHttpRequest();
var url = "http://www.javascriptkit.com/dhtmltutors/javascriptkit.json";
req.open("GET", url, false);
try {
req.send();
} catch (e) {
alert("ERROR: " + e);
}
</script>
</head>
<body>
</body>
</html>
执行代码,出现错误:
ERROR: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE)" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: chrome://firebug/content/console/commandLineExposed.js :: <TOP_LEVEL> :: line 156" data: no]
我在我的localhost,firebug控制台和jsFiddle上运行了这些代码,所有这些代码都无效。
我确信我的本地服务器运行良好,因为测试脚本alert("works")
正在运行。
任何人都可以帮助我。这是系统设置问题吗?谢谢!
答案 0 :(得分:0)
我相信你不能像这样进行跨域调用。
答案 1 :(得分:0)
XMLHttpRequest
到其他域名?除非他们在回复中设置标题Access-Control-Allow-Origin
,否则您将无法获得它。在Opera中(至少版本为11.64),无论如何,你都无法获得它。
我认为您同事的机器配置不安全。
答案 2 :(得分:0)
XMLHttpRequest受浏览器的相同原始策略的约束,因为出于安全原因,只有将请求发送到为原始网页提供服务的同一服务器时,请求才会成功。
答案 3 :(得分:0)
您可以使用代理来检索外部内容。
如上所示:http://icant.co.uk/articles/crossdomain-ajax-with-jquery/using-proxy.html。在这里,他们从PHP页面发出外部请求,并在javascript函数调用中使用它。
以下是演示页面主页的链接:http://icant.co.uk/articles/crossdomain-ajax-with-jquery/index.html