我是backbone.js的新手,我已经阅读了类似问题的其他解决方案,但仍然无法让我的例子起作用。我有一个基本的rails api,它从下面的url返回一些JSON,我试图通过backbone.js前端访问。由于它们是一个不同的服务器,我认为我需要使用'jsonp'请求。我目前通过覆盖我的骨干集合中的同步功能来做到这一点。
Api网址: http://guarded-wave-4073.herokuapp.com/api/v1/plans.json
sync: function(method, model, options) {
options.timeout = 10000;
options.dataType = 'jsonp';
options.url = 'http://guarded-wave-4073.herokuapp.com/api/v1/plans.json'
return Backbone.sync(method, model, options);
}
为了测试这个,我在chrome控制台中使用“plans = new Plans()”然后“plans.fetch()”创建一个新的“计划”集合,尝试获取JSON。
当我之后调用plans.models时,我仍然有一个空数组,而且从plans.fetch()返回的对象似乎没有包含任何json数据。
我出错的任何想法?
答案 0 :(得分:3)
我之前遇到过同样的问题。您不必重写同步方法。
“JSONP技术使用完全不同的机制向服务器发出HTTP请求并对响应进行操作。它需要在客户端页面和服务器上配合代码。服务器必须具有响应HTTP的URL”GET “在函数调用中包含JSON块的请求。因此,您不能只对任何旧服务器执行JSONP事务;它必须是明确提供功能的服务器。”
您确定您的服务器遵守上述规定吗?使用其他兼容的jsonp服务(Twitter)进行测试,看看是否收到了结果?
答案 1 :(得分:0)
您是否尝试过覆盖fetch方法?
答案 2 :(得分:0)
您应该将?callback=?
添加到您的api网址以启用jsonp