这里有点像 JavaScript 新手 -
我正在从我的网站上触发这段基本的 JavaScript 代码作为测试:
var req = new XMLHttpRequest();
req.open('GET', 'http://www.google.co.uk/', false);
req.send();
if (req.status == 200) {
alert(req.responseText);
}
我不断收到以下错误:
[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://localhost/testEx3/Default.aspx :: SendRequest :: line 402" data: no]
有谁知道我在这里做错了什么?
更新:
好的 - 所以我实际上正在尝试做的是对我在本地开发机器上发布的 Web 服务发出 POST 请求 - 我遇到了与上面相同的错误 - 这就是为什么我为了简单起见而放置该示例。现在看来“同源政策”开始发挥作用了——所以现在我发布了 URI 开头部分为 http://localhost/
而不是 http 的 Web 服务://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);
}
最佳答案
看起来您正在尝试发送违反 same origin policy 的请求.
基本上,就 AJAX 请求而言,您只能将请求发送到与发送该请求的页面相同的域。例如:
- > http://foo.com/bar -> http://foo.com/ajax (好的)
- > http://foo.bar.com/ -> http://foo.bar.com/biz/buzz (好的)
- > http://foo.com -> http://google.com (否)
- > http://foo.bar.com -> http://biz.bar.com (否)
您正在尝试执行上面的#3。
如果需要发送跨域请求,可以使用JSONP或类似 flensend/flxhr 的东西.
关于尝试触发简单的 XMLHttpRequest (GET) 时出现 JavaScript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3440451/