【问题标题】:How does GGeoXML access cross-domain XML files?GGeoXML如何访问跨域XML文件?
【发布时间】:2010-10-30 01:42:10
【问题描述】:

Google Maps 的 API 对象 GGeoXML 能够访问跨域 XML 文件(通常是 KML 或 GeoRSS)。它不使用 XmlHttpRequest,因为它抛出“访问受限 URI 被拒绝”异常(正如它应该的那样)。此外,它不使用 Google 的 GXmlHttp 包装器,因为我已经尝试过,它会抛出相同的 URI denied 异常。

因此,GGeoXML 不使用 XMLHttpRequest 也不使用 Google 的 GXMLHttp 包装器。 GGeoXML如何访问跨域XML文件?

【问题讨论】:

  • 所以,据我了解,GoogleMaps 使用“脚本标签黑客”来加载我的外部 XML 文件。它插入脚本 src 及其代理服务器,然后加载我的外部 KML 并交付给客户端。它会在 XML 和 JSON 之间转换吗?
  • 他们包含的脚本只是他们需要的javascript对象,他们的自定义事件将被触发。 xml 到 json 的转换当然可以在客户端完成(google 'xml to json javascript converter')

标签: javascript ajax google-maps xmlhttprequest kml


【解决方案1】:

后端有一个代理可以“跨域”访问此数据。这避免了浏览器中的跨域安全功能。

对“fetchData”的 JS 调用调用 js 所在域上的 Web 服务。此后端代理“跨域”访问其他信息,对其进行解析并将其返回给“fetchData”调用的回调函数。

【讨论】:

    【解决方案2】:

    如果您确实想通过 AJAX 获取跨域数据,那么可以使用 JSONP。它本质上是一个封装在函数调用中的 JSON 对象。当 JSONP 对象返回到您的服务器时,将执行该函数并将其中的 JSON 解析回一个可行的对象。

    JSONP 是专门为避免 AJAX 的跨域限制而创建的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多