【问题标题】:Get Xml Data Cross-Domain with JQuery使用 JQuery 获取 Xml 数据跨域
【发布时间】:2020-12-15 19:18:36
【问题描述】:

有没有办法使用 JQuery(= 客户端)跨域加载 XML 数据?

$.get('http://otherdomain.com/data.xml', function(xml) { }

上面的不行-我必须依赖JSONP,还是有办法加载XML?

【问题讨论】:

    标签: jquery ajax cross-domain


    【解决方案1】:

    无法加载 XML。所以是的,使用“标准”xmlhttprequests 你需要 JSONpadding。

    如果服务器支持“Cross-Origin Resource Sharing (CORS)”你可以轻松接收 来自外域的数据。 这意味着,您必须将自定义标头添加到您的 XmlHttpRequest ('Origin') 和服务器中 决定是否允许请求。

    【讨论】:

      【解决方案2】:

      您需要使用JSONP

      【讨论】:

      • 嗯,想多了,太糟糕了。也许还有希望,我会在几个小时内不回答这个问题。谢谢。
      • 另一种方法是使用隐藏的 xdomain iframe 并通过 postMessagereceiveMessage 与其通信,但 jsonp 更容易。
      • 是的,问题是,仍然有大量 Web 服务仅以 xml 格式提供数据。我试图实现一种“通用”方法来接收数据。
      【解决方案3】:

      我发现 Chrome 中的一些 jsonp 技术不起作用。

      要么选择 json 出现跨域错误,要么 jsonp 和 xml 格式无法识别,等待 jsonp 格式。

      因此,解决方案是使用 Yahoo Query Language api 在所有浏览器上检索数据而不会出现跨域错误。

      有很多方法可以调用链接并使用 xml 数据。

      我无法发布我拥有的代码,但您可以在网络上轻松找到 sn-ps。

      所以你必须定义你的 url 来使用 encodeURI 方法查询 yahoo api。 getJSON 方法来自 jQuery,然后您使用原始 xml 解析一组文本结果。

      【讨论】:

        【解决方案4】:

        好吧,我们可以很容易地从一些 php 函数中获取数据,比如 file_get_content 和 curl(因为我是 Php/ROR dev ,其他语言也有相同的函数)。使用这些函数我们可以从外域获取xml数据,

        现在的问题是为什么我们在使用 AJAX 时不能做同样的事情, 根据我的理解,curl 和 file_get_content 函数不会调用 http 请求,而 Ajax 会。

        简而言之,我们无法使用 AJAX 加载 xml 数据。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-23
          • 2011-03-05
          • 1970-01-01
          • 2017-06-02
          • 2013-02-28
          • 2011-06-19
          • 2016-12-10
          • 1970-01-01
          相关资源
          最近更新 更多