javascript - 如何从外部 JSON feed 创建 JSONP?

标签 javascript jquery cross-domain

我有两个域: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/

相关文章:

javascript - 使用 Twitter Bootstrap 调整页面大小时更改 css 中 div 的高度

javascript - HTML5 音频 - currentTime 属性不准确?

javascript - 将 JSON 对象分配给来自 Google Sheets URL 的变量?

javascript - 无法将串联值附加到 div block 中的 customId

angularjs - 重新定义的跨域请求。我做错了什么?

http - 访问控制允许方法的默认值

javascript - 5秒后自动滚动页面到div

javascript - 函数内的 if 语句会破坏 javascript

php - 构建协作工具 - 检查用户当前是否正在编辑/拖动元素并显示对话框

session - Laravel 多域 session