首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在backbone.js应用程序中从远程服务器获取json数据

如何在backbone.js应用程序中从远程服务器获取json数据
EN

Stack Overflow用户
提问于 2012-05-07 21:22:14
回答 3查看 1.5K关注 0票数 0

我遵循了这个repo中的一个应用程序示例,我开始在本地机器上使用rails intead php for API构建一个类似的应用程序,所以我在一个特定的根目录中构建rails应用程序,然后在另一个根目录中构建调用rails api的backbone.js/JQM应用程序。

因此,我使用带有:http://localhost:3000/api/clubs.json的urlRoot在backbone中创建了模型和集合,这与用于检索俱乐部列表的本地服务器url相对应

然后,我尝试在javascript控制台中查看这些命令会发生什么:

代码语言: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俱乐部列表。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-09 16:33:19

我已经使用'rack-cors' gem解决了这个问题,并将基本配置设置为

config/application.rb:

代码语言:javascript
运行
复制
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
票数 1
EN

Stack Overflow用户

发布于 2012-05-07 21:36:20

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

代码语言:javascript
运行
复制
clubs = new ClubsCollection();
clubs.on("reset", function(){
  alert(clubs.length + " item(s) found");
});
clubs.fetch();
票数 1
EN

Stack Overflow用户

发布于 2012-05-08 05:26:20

如果查看一下backbone API,就会发现可以通过fetch()调用提供一个成功的回调,例如

clubs.fetch({ success :函数(模型,错误){ //做点什么} });

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10482873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档