我有两个域:www.domain1.com 和 www.domain2.com
我在domain1上有一个纯JSON提要。
我想从domain1中提取JSON feed并将其放在domain2上的模块上。
根据我的阅读,解决方法是使用 JSONP,但是如何做到这一点呢?有没有办法只用 JQuery/javascript 来做到这一点?或者我必须使用服务器端代码(我正在使用 Coldfusion)。我也可以只使用 .getJSON 而不是 .ajax (我是初学者,所以我从未使用过 .ajax)
编辑 好吧,我还是很困惑。只是在 url 末尾添加回调就破坏了它。我怎样才能做到这一点,而不是提要的远程路径,而是拉出此代码位于 www.domain2.com 上但提要位于 www.domain1.com 上的绝对路径?
var feed ="/event/json.tag/tag/sports/";
$.getJSON(feed,function(data) {
$.each(data.items, function(i,obj) {
do something here...
}
}
最佳答案
JSONP 只是一个封装在 JSON 对象上的回调函数。 一般约定是有一个返回 JSON 的端点,除非在请求上定义了回调参数,并在这种情况下返回 JSONP。
即http://www.domain1.com/api/getStuff可能会返回:
{'foo': 'bar', 'fizz': 'buzz'}
然后http://www.domain1.com/api/getStuff?cb=cb123应该返回:
cb123({'foo': 'bar', 'fizz': 'buzz'});
我不了解 ColdFusion,但我认为这个示例很好:http://www.coldfusionjedi.com/index.cfm/2009/3/11/Writing-a-JSONP-service-in-ColdFusion
除非其他人已经在您正在使用的服务器中构建了 JSONP 支持,否则不存在纯客户端解决方案...
关于javascript - 如何从外部 JSON feed 创建 JSONP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4663135/