我正在关注此repo的应用示例 我开始使用rails intead php for API在我的本地机器上构建一个类似的应用程序,所以我在一个特定的根目录中构建rails应用程序,然后在另一个根目录中使用rails.js / JQM应用程序调用rails api。
所以我使用urlRoot创建模型和骨干集合:http://localhost:3000/api/clubs.json,对应于用于检索俱乐部列表的本地服务器URL
然后我试图在javascript控制台中看到这些命令会发生什么:
clubs = new ClubsCollection()
Object {length = 0 ...etc..}
clubs.fetch()
GET http://localhost:3000/api/clubs.json 200 OK
并且回复是空的......
但是当我调用网址http://localhost:3000/api/clubs.json时,它会正确返回json俱乐部列表。
你能帮我理解做这个电话的最好方法吗?
答案 0 :(得分:1)
fetch
是异步的。你必须等待它完成加载数据,然后检查响应。这通常通过reset
事件完成:
clubs = new ClubsCollection();
clubs.on("reset", function(){
alert(clubs.length + " item(s) found");
});
clubs.fetch();
答案 1 :(得分:1)
我已使用'rack-cors' gem和基本配置解决了问题
配置/ 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
答案 2 :(得分:0)
如果查看骨干API,可以通过fetch()调用提供成功的回调,例如
clubs.fetch({ 成功:功能(型号,错误){//做某事} });
与其他答案一样,fetch是异步的,所以你不能指望通过在.fetch()调用之后设置一个断点来恢复结果。