0

我正在关注this repo中的一个应用程序示例 ,我开始在我的本地机器上使用rails intead php for API构建一个类似的应用程序,所以我在一个特定的根目录中构建rails应用程序,然后在另一个根目录中构建backbone.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

响应是空的...

但是当我调用 url http://localhost:3000/api/clubs.json时,它会正确返回 json 俱乐部列表。

你能帮我理解打这个电话的最好方法吗?

4

3 回答 3

1

fetch是异步的。您必须等待它完成加载数据,然后检查响应。这通常通过reset事件完成:


clubs = new ClubsCollection();
clubs.on("reset", function(){
  alert(clubs.length + " item(s) found");
});
clubs.fetch();
于 2012-05-07T13:36:20.093 回答
1

我已经使用带有基本配置的“rack-cors”gem解决了这个问题

配置/应用程序.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-09T08:33:18.833 回答
0

如果您查看主干 API,则可以通过 fetch() 调用提供一个成功回调,例如

clubs.fetch({ success : function(model, err) { // 做点什么 } });

与其他答案一样, fetch 是异步的,因此您不能指望通过在 .fetch() 调用之后设置断点来返回结果。

于 2012-05-07T21:26:19.903 回答