我正在尝试将JSON (从php的json_encode)加载到一个主干JS集合中。我把这个问题简化为:
var myJSON = '[{ "id":"1","name":"some name","description":"hmmm"}]';
var myCollection = new MyCollection(myJSON, { view: this });
和:
MyObject = Backbone.Model.extend({
id: null,
name: null,
description: null
});
MyCollection = Backbone.Collection.extend({
model: MyObject,
initialize: function (models,options) { }
});
错误:
未捕获TypeError:无法使用' in‘运算符在中搜索'id’
类似的问题:Backbone: fetch collection from server
我的JSON格式肯定是正确的,我是不是遗漏了什么明显的东西?我尝试简单地使用id:"1“,而不是"id”,结果是一样的。
发布于 2012-01-16 14:31:28
您的JSON仍然是字符串格式。在赋值之前将其传递给JSON.parse:
var myJSON = JSON.parse('[{"id":1,"name":"some name","description":"hmmm"}]');
发布于 2012-01-16 14:24:43
您忘记了模型中的defaults
散列。
MyObject = Backbone.Model.extend({
defaults: {
id: null,
name: null,
description: null
}
});
发布于 2013-05-04 17:52:15
所以我可能完全忽略了这一点,但问题似乎是数组周围的“单引号”。也就是说,这个:
var myJSON = '[{ "id":"1","name":"some name","description":"hmmm"}]';
应该是:
var myJSON = [{ "id":"1","name":"some name","description":"hmmm"}];
Php,afik,没有添加单引号,所以它应该像更改一行一样简单,如下所示:
$my_js = "var myJSON = '" . json_encode($my_array_to_send)) . "';";
至:
$my_js = "var myJSON = " . json_encode($my_array_to_send)) . "; ";
https://stackoverflow.com/questions/8876303
复制相似问题