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

per*_*ter 4 jquery mootools cross-domain

在我永恒的内部斗争中,是否留下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){
            $("<img/>").attr("src", item.media.m).appendTo("#images");
            if ( i == 3 ) return false;
          });
        });
Run Code Online (Sandbox Code Playgroud)

这不是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({});
Run Code Online (Sandbox Code Playgroud)

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

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

Jak*_*čar 11

在页面上说它是JSONP.

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

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

它将返回:

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

jQuery定义临时回调函数并插入一个<script src="..."></script>元素,该元素不受同一原始策略的限制.

加载脚本时,会执行该功能,就是这样.

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

更多信息在这里.