【问题标题】:Having some trouble with XMLHTTPRequest.send() in Safari, Chrome, and Firefox在 Safari、Chrome 和 Firefox 中使用 XMLHTTPRequest.send() 时遇到一些问题
【发布时间】:2011-06-20 19:19:39
【问题描述】:

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

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

这是我运行的代码,

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

当我在网上搜索发生了什么的线索时,有一个主题是关于从另一个域请求内容不起作用并且问题出在服务器端时的问题。如果是这种情况,我将如何打开它(允许其他域进行 xmlhttprequests)? API 位于我们的一台服务器上,但我们正在从其他域进行请求测试以使其正常工作。

【问题讨论】:

标签: javascript firefox google-chrome xmlhttprequest


【解决方案1】:

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

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

【讨论】:

  • elvis.rowan.edu 上的本地 php 脚本?如果是这样,有没有其他方法,我知道Flash使用的是crossdomain.xml,Javascript有类似的吗?
  • 事实证明,我们将托管该文件,并且 php 工作并帮助进行示例测试。谢谢!
【解决方案2】:

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

设置浏览器的安全性以允许跨域调用如果用户使用它来浏览网页是自找麻烦。

【讨论】:

  • 我打算使用的浏览器都是支持 HTML5 的浏览器。所以希望它们应该足够新。我会调查 CORS。
【解决方案3】:

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

我知道如何在 Internet Explorer 中使用 MSXML ServerXMLHTTP 对象执行此操作,但至于在其他浏览器中尝试,请尝试这样做:

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

【讨论】:

  • 感谢@user535617,但在 Chrome 和 Firefox 中没有运气
【解决方案4】:

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

xmlHttp.send(null);

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

【讨论】:

  • send() 不需要任何参数。在大多数浏览器上,它也可以在没有 null 的情况下工作,所以这不是问题。
【解决方案5】:
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open('GET','baselead.xml',false);
    xmlhttp.setRequestHeader('Content-Type', 'text/xml');
    xmlhttp.send('');

你必须使用 'baselead.xml' qoute('') 它在 chrome 中对我有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多