0

我正在开发一个移动应用程序,并尝试在嵌入 WebView 的 HTML/CSS/JS 中完成大部分工作。应用程序需要从 XML-webservice 获取数据,而 HTML/CSS/JS 代码应该位于本地文件系统上。然而,这让我陷入了 Ajax 调用的“同源策略”问题,因为 WebKit 将本地文件的 Origin 设置为 null。但是我注意到,当在 $.ajax 参数中将 dataType 设置为“jsonp”而不是“xml”时,Chrome 中的调用将失败(parserError),但我可以在调试器中看到从 web 服务返回的数据。我的问题是:是否有可能以某种方式覆盖收到响应数据时调用的默认回调?如果没有,我还能做什么?我无权访问运行 Web 服务的服务器。在关于这个问题的其他线程中,我 已经读过在页面加载时执行请求而不是像 Ajax 调用那样工作。但是,我不清楚这意味着什么/如何完成。我很欣赏这方面的任何启示!

4

1 回答 1

0

JSONP 是带 Padding 的 JSON,它将 URL(仅限 GET)作为<script>标签加载,并假定 JSONP 响应包含一个函数调用,其中实际 JSON 作为第一个参数。

大多数远程 Web 服务,如 Twitter,都支持 'callback=' GET 参数。例如:

GET /my/jsonp/?callback=myFunction

响应应该是一个包含内容的“JavaScript”文件。

myFunction({"code": 200, "status": "OK"});

那是JSONP。

于 2011-02-11T12:05:43.900 回答