这里有一个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);
}
答案 0 :(得分:4)
您似乎正在尝试发送违反same origin policy的请求。
基本上,就AJAX请求而言,您只能将请求发送到与发送该请求的页面相同的域。例如:
你正试图做上面的#3。
如果您需要发送跨域请求,可以使用JSONP或flensend/flxhr之类的内容。
答案 1 :(得分:1)
除非你为谷歌工作,否则这不起作用。您无法通过XMLHttpRequest从其他域提取信息。它被称为“同源政策”。
编辑 - 如果您从本地服务器收到500错误,这意味着您的HTTP请求正在向服务器发送,并且服务器中的某些代码失败。检查服务器日志。