我正在使用 AJAX、jQuery 和 Phonegap 创建一个 iOS / Droid 应用程序。后端是通过 Web 服务提供内容的 Drupal 7 站点。不过,我对 JSONP 回调的必要性有点困惑。
我的理解是,为了允许跨域请求,需要 JSONP。而且,在某种程度上,它通过将 JSON 数据包装在回调函数中来工作,从而使其成为一个对象。
但是,我发现我可以在没有回调的情况下发送 JSONP 请求,并通过 jQuery 解析数据而无需回调函数。因此 JSONP 数据看起来与 JSON 数据完全一样。
我错过了什么吗?如果将数据作为函数提供是 JSONP 的好处之一,那么在流程的某个阶段不应该需要它吗?我是否通过不发送回调参数来绕过某种级别的安全性?
谢谢!
仅供参考,这里是 jQuery AJAX 代码:
$.ajax({
type: 'GET',
cache: false,
url: 'http://www.example.com/mobile/menu/devel-gosto.jsonp',
dataType: 'jsonp',
timeout: menuLoadTimeout,
success: function (data) {
menu = populateSlider(data.tree, 0);
}
});
因此,我将 dataType 设置为“jsonp”,调用返回 JSONP 数据的 Web 服务,但将回调保留在 URL 之外。Web 服务在没有回调包装器的情况下进行响应。一切正常。