1

我对同源政策有疑问...

我有使用 JSON 和 XML 数据的 JavaScript 代码。我知道我需要将 JSON 更改为 JSONP,因为我的服务器位于不同的域中,但我是否只在客户端这样做?那么 XML 数据呢?也可以以某种方式跨域加载吗?

最后,是否有任何好的网站可以深入解释这一点,并附有示例?

4

3 回答 3

0

在 jsonp 响应中编码您的 XML,然后让您的客户端将其提取并解释为 XML。

于 2010-12-22T03:43:16.077 回答
0

您必须修改服务器。您可以将 JSONP 的原理用于 XML。你只需要传递一个字符串:

例如,假设您的服务器端程序位于 /xmlp 。您传递一个callback参数,然后脚本将 XML 输出包装在其中。

例如

/xmlp?callback=mycall

输出:

mycall('<root><el attr="value"/ ></root>');

mycall然后在客户端解析 XML(传递到 JavaScript函数)。

于 2010-12-22T03:47:12.863 回答
0

一旦您的数据源位于不同的域中,您就必须使用 JSONP 来获取数据。这适用于 JSON 和 XML 数据。JSONP 只是一种表示法,它使您可以提供回调函数,并在远程调用完成后立即调用它。数据作为回调参数提供。

当然,您的 API 必须支持 JSONP,只要对 API 的请求包含“?callback=f”,它就必须返回类似

{ f(data); }

而 f - 是在您的页面某处定义的函数。

所以,基本上当 API 调用完成后,你的回调函数就会被调用。

您有多种选择来使用来自不同来源的 API

  1. 使用 YQL - http://developer.yahoo.com/yql/
  2. 手动,纯 JS 或使用 jQuery - http://www.beletsky.net/2010/07/json-jsonp-and-same-origin-policy-issue.html
于 2010-12-22T03:53:30.940 回答