jQuery如何进行跨域ajax调用以及如何使用mootools复制em

在我永恒的内部斗争中是否留下mootools或跳转到jQuery我在jQuery文档中找到了引起我注意的东西,这就是jQuery可以向不同的域请求JSON,这通常是浏览器禁止的。

我已经看到了跨子域的一些变通方法,但从来没有跨域,我真的很兴奋,首先我认为我是服务器相关的但是尝试了一点点我已经看到从jQuery做同样的JSON请求关于Mootools的文档不起作用!

这适用于jQuery:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", function(data){ $.each(data.items, function(i,item){ $("").attr("src", item.media.m).appendTo("#images"); if ( i == 3 ) return false; }); }); 

这不是Mootools:

 var jsonRequest = new Request.JSON({url: "http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?", onComplete: function(person, responseText){ alert(responseText); }}).get({}); 

我该如何复制这种行为? 是什么导致的?

jQuery Doc: http ://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback Mootols Doc: http ://mootools.net/docs/Request/Request.JSON

在页面上说它是JSONP。

JSONP是一种技巧,服务器不是返回通常的响应,而是将其包装到用户提供的方法的方法调用中,例如,而不是:

{"foo": "bar", "baz":"bah"}

它将返回:

temporaryCallbackFunctionName({"foo": "bar", "baz":"bah"});

jQuery定义临时回调函数并插入元素,该元素不受同一原始策略的限制。

加载脚本时,会执行该function,就是这样。

缺点是,如果服务器是邪恶的(或被黑客攻击),它现在可以在您的浏览器中执行任意代码。

更多信息在这里 。

您可以使用插件JSONP在MooTools中使用JSONP 。 它由MooTools的核心开发人员之一Aaron Newton制作。

自v1.2.2(2009年4月23日发布)以来,它更多地包含在MooTools中。

有关详细信息,请查看此文档页面 。

根据它的API文档和这个论坛 ,你似乎无法用Mootools做到这一点 。

这是有限的原因可能是因为跨站点脚本攻击 。