使用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/