使用jQuery的跨站点AJAX

我有一个现有的jQuery插件,可以进行大量的AJAX调用(主要是JSON)。 我想知道什么是最快允许它进行跨站点调用,即$ .get和$ .post URL不会来自同一个域。

我听说过JSONP,但是想知道是否有人能给我一个具体的例子来讲述整个过程。 我希望尽可能对我的脚本进行最小的更改。 我应该使用各种proxy.php吗?

感谢您的时间。

JSONP将允许您进行跨站点呼叫。 请参阅jQuery文档。

这个概念很简单:jQuery不会执行普通的Ajax调用,而是将标记附加到 。 为了使其工作,您的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设置起来不那么麻烦,只需要服务器端的filter。

请仔细阅读这篇文章。详细解释和类似。 只有约束是IE不支持这个和旧版本的FF,chrome也有一些问题。

http://techblog.constantcontact.com/software-development/using-cors-for-cross-domain-ajax-requests/