无法从URL获取响应

时间:2012-06-29 18:19:37

标签: javascript url xmlhttprequest request

我在这个问题上花了好几个小时,我的伙伴们无法帮助我。他说这可能是一个跨站点脚本问题,可能是我的系统设置导致了这个问题,因为脚本在我的同事的机器上运行良好。

以下是一个简单的案例:

<!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")正在运行。

任何人都可以帮助我。这是系统设置问题吗?谢谢!

4 个答案:

答案 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