6

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

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

感谢您的时间。

4

3 回答 3

13

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?

于 2009-07-29T02:43:30.620 回答
2

如果您可以控制远程域或远程域有一个许可的crossdomain.xml,您可以将其放入 flXHR 之类的库及其jQuery 插件中。

于 2009-07-29T02:42:40.700 回答
1

您还可以使用 CORS 代替 JSONP,适用于 ff、chrome、safari。CORS 设置起来不那么麻烦,只需要在服务器端有一个过滤器。

请仔细阅读这篇文章。很好的解释和类似的。唯一的限制是 IE 不支持这个和旧版本的 FF,chrome 也有一些问题。

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

于 2013-07-28T08:39:35.603 回答