在Safari,Chrome和Firefox中遇到XMLHTTPRequest.send()问题

时间:2011-02-03 16:37:47

标签: javascript firefox google-chrome xmlhttprequest

我有一些javascript代码会向api发出请求。并且请求吐出xml作为响应。我正在使用XMLHTTPRequest来获取xml。

在Firebug中我注意到它失败了,并引发异常。我不确定发生了什么。这是Firebug中的一个演示,您将在控制台窗口中注意到它将失败。

这是我运行的代码,

xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", configgg, false );
xmlHttp.send()

当我在线搜索线索时,有一个关于从其他域请求内容无法解决问题的主题,问题是服务器端。如果是这样的话我将如何打开它(允许其他域生成xmlhttprequests)? API位于我们的某个服务器上,但我们正在从其他域进行请求测试以使其正常工作。

5 个答案:

答案 0 :(得分:1)

Same_origin_policy不允许您跨域拨打电话。您可以在使用新浏览器时查看CORS,或者需要使用代理,或者需要开始使用JSONP

设置浏览器的安全性以允许跨域调用,如果用户使用它上网,则会遇到麻烦。

答案 1 :(得分:1)

这里的每个人都会喜欢的答案将涉及同源政策,该政策不允许跨域调用。但我经历过类似的事情,我知道这不是你想要的答案。

我知道如何在Internet Explorer中使用MSXML ServerXMLHTTP对象执行此操作,但就在其他浏览器中尝试此操作而言,请尝试执行此操作:

xmlHttp = new XMLHttpRequest();  
xmlHttp.open( "GET", configgg, false );  
xmlHttp.setRequestHeader("Host", configgg);
xmlHttp.send();

答案 2 :(得分:1)

正如其他答案中所建议的那样,您尝试从其他域访问某些内容的原因是脚本失败的原因。

要解决此问题,您可以通过加载一个回显API网址内容的本地PHP脚本来绕过javascript限制。

答案 3 :(得分:0)

我认为它失败的原因是因为当你使用send方法但不包括任何参数时,你必须告诉它null,如下所示:

xmlHttp.send(null);

其他一些方法也会发生这种情况(如果你没有将getComputedStyle作为第二个参数,null也会失败)。

答案 4 :(得分:0)

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open('GET','baselead.xml',false);
    xmlhttp.setRequestHeader('Content-Type', 'text/xml');
    xmlhttp.send('');

你必须使用'baselead.xml'qoute('')它适用于我的chrome