我遵循了这个repo中的一个应用程序示例,我开始在本地机器上使用rails intead php for API构建一个类似的应用程序,所以我在一个特定的根目录中构建rails应用程序,然后在另一个根目录中构建调用rails api的backbone.js/JQM应用程序。
因此,我使用带有:http://localhost:3000/api/clubs.json的urlRoot在backbone中创建了模型和集合,这与用于检索俱乐部列表的本地服务器url相对应
然后,我尝试在javascript控制台中查看这些命令会发生什么:
clubs = new ClubsCollection()
Object {length = 0 ...etc..}
clubs.fetch()
GET http://localhost:3000/api/clubs.json 200 OK响应是空的..。
但是当我调用url http://localhost:3000/api/clubs.json时,它会正确地返回json俱乐部列表。
你能帮我理解打这个电话的最佳方式吗?
发布于 2012-05-09 16:33:19
我已经使用'rack-cors' gem解决了这个问题,并将基本配置设置为
config/application.rb:
config.middleware.use Rack::Cors do
allow do
origins 'localhost'
resource '%r{/api/\$+.json}',
:headers => ['Origin', 'Accept', 'Content-Type'],
:methods => [:get, :put, :delete]
end
end发布于 2012-05-07 21:36:20
fetch是异步的。您必须等待它完成数据加载,然后检查响应。这通常是通过reset事件完成的:
clubs = new ClubsCollection();
clubs.on("reset", function(){
alert(clubs.length + " item(s) found");
});
clubs.fetch();发布于 2012-05-08 05:26:20
如果查看一下backbone API,就会发现可以通过fetch()调用提供一个成功的回调,例如
clubs.fetch({ success :函数(模型,错误){ //做点什么} });
与另一个答案一样,fetch是异步的,因此您不能期望通过在.fetch()调用之后设置断点来返回结果。
https://stackoverflow.com/questions/10482873
复制相似问题