Javascript 读取从API REST返回的JSON对象
我觉得问这个问题很愚蠢,但我三天前就同意了。。。我构建了一个php api rest,它返回一个json编码信息。api返回的json是正确的,如下所示:Javascript 读取从API REST返回的JSON对象,javascript,json,rest,backbone.js,Javascript,Json,Rest,Backbone.js,我觉得问这个问题很愚蠢,但我三天前就同意了。。。我构建了一个php api rest,它返回一个json编码信息。api返回的json是正确的,如下所示: [ {"pk_user":"1","name":"George","surname":"Littlewolf","profile":"Game designer - Developer"}, {"pk_user":"2","name":"Anne","surname":"Carpenter","profile":"Develo
[
{"pk_user":"1","name":"George","surname":"Littlewolf","profile":"Game designer - Developer"},
{"pk_user":"2","name":"Anne","surname":"Carpenter","profile":"Developer"},
{"pk_user":"3","name":"John","surname":"Sullivan","profile":"Designer"},
{"pk_user":"4","name":"Judith","surname":"Lenders","profile":"Developer"},
{"pk_user":"5","name":"Jason","surname":"Middleton","profile":"Manager"}
]
之后,我将创建一个主干前端来攻击api。我只开发了一个视图,它读取我上面写的json。我有一个模型(用户)和一个集合(用户),我想保存从json信息中读取的信息
我将只放视图的渲染函数的代码:
render: function() {
var users = new Users();
users.fetch();
$.each(users['models'], function(i, item) {
console.log(item);
});
this.template = _.template(template, {users : users});
this.$el.html(this.template);
return this;
}
现在,控制台只返回您在下图中看到的内容:
我想直接访问这些项目,但我不知道为什么,但我所做的一切都不起作用。。。谢谢,请原谅我的新手解释。。。
编辑
我已经通知了所有想“现场”查看问题的人。不确定这是否是您想要的,但如果您想记录用户的属性,只需执行以下操作:
$.each(users['models'], function(i, item) {
console.log(item.attributes);
});
是一个AJAX调用,因此:
users.fetch();
无法立即填充集合,它必须等待服务器响应。因此,当您查看users.models
时,那里将没有任何内容,而您的视图最终将一无所获
通常的方法是侦听来自用户的事件,并呈现HTML以响应这些事件:
initialize: function() {
this.collection = new Users;
this.listenTo(this.collection, 'reset', this.render);
// bind to other events as needed...
this.users.fetch({ reset: true });
},
render: function() {
this.collection.each(function(user) {
// render the `user` model in here...
});
}
请注意切换到,而不是直接处理集合的models
属性
或者,在调用fetch
时使用成功处理程序:
this.users.fetch({
success: function(collection) {
collection.each(function(user) {
// render the `user` model in here...
});
}
});
我也尝试过这个解决方案,但不起作用。我已上载代码,以便您可以在线查看问题。对不起,我不完全了解问题所在。我在上传的代码中看到,当users.fetch()
从服务器获取JSON对象时,由于代码一直在运行,用户将是空的。这是你的问题吗?收集用户它实际上不是空的。问题是我不知道如何访问我在用户中加载的每个用户。事实上,我在javascript控制台上打印的内容是用户['models']
,您可以看到数据的存在,但我不知道如何访问everty用户信息。这可能是你第一次发表评论,但我不知道为什么不起作用:(它工作得很好。感谢你的回答,不仅帮助我解决了问题,而且我也理解了它的工作原理。谢谢。