我有一个现有的 jQuery 插件,它可以进行很多 AJAX 调用(主要是 JSON)。我想知道什么是允许它进行跨站点调用的最快方法,即 $.get 和 $.post URL 不会来自同一个域。
我听说过 JSONP,但想知道是否有人可以给我一个具体的例子来了解整个过程。如果可能的话,我想对我的脚本进行最小的更改。我应该使用各种 proxy.php 吗?
感谢您的时间。
我有一个现有的 jQuery 插件,它可以进行很多 AJAX 调用(主要是 JSON)。我想知道什么是允许它进行跨站点调用的最快方法,即 $.get 和 $.post URL 不会来自同一个域。
我听说过 JSONP,但想知道是否有人可以给我一个具体的例子来了解整个过程。如果可能的话,我想对我的脚本进行最小的更改。我应该使用各种 proxy.php 吗?
感谢您的时间。
JSONP 将允许您进行跨站点调用。请参阅有关此问题的 jQuery 文档。
这个概念很简单:jQuery 会<script>
在你的<head>
. 为了使其工作,您的 JSON 数据需要包装在函数调用中。
您的服务器需要以这种方式发送信息(PHP 示例):
$json = json_encode($data);
echo $_GET['jsonp_callback'] . '(' . $json . ');';
然后,您可以使用 jQuery 来获取该信息:
$.ajax({
dataType: 'jsonp',
jsonp: 'jsonp_callback',
url: 'http://myotherserver.com/getdata',
success: function () {
// do stuff
},
});
更多信息可在此处获得:什么是 JSONP?
如果您可以控制远程域或远程域有一个许可的crossdomain.xml,您可以将其放入 flXHR 之类的库及其jQuery 插件中。
您还可以使用 CORS 代替 JSONP,适用于 ff、chrome、safari。CORS 设置起来不那么麻烦,只需要在服务器端有一个过滤器。
请仔细阅读这篇文章。很好的解释和类似的。唯一的限制是 IE 不支持这个和旧版本的 FF,chrome 也有一些问题。
http://techblog.constantcontact.com/software-development/using-cors-for-cross-domain-ajax-requests/