尝试触发简单XMLHttpRequest(GET)时出现JavaScript错误

时间:2010-08-09 13:26:55

标签: javascript ajax xmlhttprequest

这里有一个JavaScript新手 -

我从我的网站上发布了这个基本的JavaScript代码作为测试:

var req = new XMLHttpRequest();
req.open('GET', 'http://www.google.co.uk/', false);
req.send();
if (req.status == 200) {
    alert(req.responseText);
}

我一直收到以下错误:

  

[例外......“组件已返回   失败代码:0x80004005   (NS_ERROR_FAILURE)   [nsIXMLHttpRequest.send]“nsresult:   “0x80004005(NS_ERROR_FAILURE)”   位置:“JS框架::   http://localhost/testEx3/Default.aspx   :: SendRequest :: line 402“data:no]

有谁知道我在这里做错了什么?

更新

好的 - 所以我正在尝试做的是对我在本地开发机器上发布的Web服务的POST请求 - 我得到了与上面相同的错误 - 这就是为什么我把这个例子简单化了。现在看起来“同源策略”已经发挥作用 - 所以现在我已经发布了带有URI的开头部分的Web服务http://localhost/而不是http://tempuri.org/

现在我收到500错误。标题中是否有我遗漏的东西?

var request = new XMLHttpRequest();
request.open("POST", "http://localhost/ApplicationServices.asmx?op=AddressSearch", false, "", "");
request.setRequestHeader("X-Requested-With", "XMLHttpRequest");

request.send(x, y, buffer);

if (request.status == 200) {
    alert("Success");
}
else {
    alert("Failure: " + request.status);
}

2 个答案:

答案 0 :(得分:4)

您似乎正在尝试发送违反same origin policy的请求。

基本上,就AJAX请求而言,您只能将请求发送到与发送该请求的页面相同的域。例如:

你正试图做上面的#3。

如果您需要发送跨域请求,可以使用JSONPflensend/flxhr之类的内容。

答案 1 :(得分:1)

除非你为谷歌工作,否则这不起作用。您无法通过XMLHttpRequest从其他域提取信息。它被称为“同源政策”。

编辑 - 如果您从本地服务器收到500错误,这意味着您的HTTP请求正在向服务器发送,并且服务器中的某些代码失败。检查服务器日志。