jquery - jQuery 如何进行跨域 ajax 调用以及如何使用 mootools 复制它们

标签 jquery mootools cross-domain

在我关于是继续使用 mootools 还是跳到 jQuery 的永恒内部斗争中,我在 jQuery 文档中发现了一些引起我注意的东西,那就是 jQuery 可以向不同的域请求 JSON,这通常是被禁止的通过浏览器。

我已经看到了一些跨子域的解决方法,但从未见过跨域,我真的很兴奋,首先我以为我与服务器相关,但尝试了更多一点,我发现做同样的 JSON Mootools 上的 jQuery 文档请求不起作用!

这有效 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;
          });
        });

这不 穆工具:

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 文档:http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback Mootols 文档:http://mootools.net/docs/Request/Request.JSON

最佳答案

页面上说它是 JSONP。

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

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

它将返回:

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

jQuery 定义临时回调函数并插入 <script src="..."></script>元素,不受同源策略限制。

加载脚本后,就会执行该函数,仅此而已。

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

更多信息here .

关于jquery - jQuery 如何进行跨域 ajax 调用以及如何使用 mootools 复制它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/726704/

相关文章:

javascript - 未捕获的 typeerror undefined 不是 javascript 中的函数

javascript - 可拖动 div 内的图像在拖动时阻碍了我的拖放

javascript - 有没有办法在没有后端的情况下将本地镜像放入静态网站?

javascript - 如何使用 javascript 进行跨域 http get 请求?

javascript - Chrome 扩展中来自 Iframe 的不安全 Javascript 访问

javascript - 如何通过javascript跨域返回html

jquery - 如何跟踪文件下载计数?

javascript - jQuery 获取自定义事件的参数值

javascript - 在 Javascript 中编程 OOP - 正确地

javascript - JQuery:将数组输入值转换为字符串优化