Javascript 主干收集是否自动解析加载的数据
尝试使用主干集合初始化抓取json数据,但结果表明数据为空。 主干收集是自动将json数据解析到模型中,还是必须手动解析Javascript 主干收集是否自动解析加载的数据,javascript,backbone.js,Javascript,Backbone.js,尝试使用主干集合初始化抓取json数据,但结果表明数据为空。 主干收集是自动将json数据解析到模型中,还是必须手动解析 var Book = Backbone.Model.extend({ title:"", isbn:"", img:"" }); var Books = Backbone.Collection.extend({ model:Book, url:'latest.json', // parse:function(data
var Book = Backbone.Model.extend({
title:"",
isbn:"",
img:""
});
var Books = Backbone.Collection.extend({
model:Book,
url:'latest.json',
// parse:function(data){
// console.log(data);
// },
initialize: function(){
this.fetch();
}
});
经过编辑以添加示例json,我使用jsonlint.com进行验证
[
{"title":"American Pie","isbn":"345354356","img":"/image/pie.png"},
{"title":"Long Tails","isbn":"567575576g","img":"/image/long_tails.png"},
{"title":"Pirates","isbn":"567575765","img":"/image/pirates.png"}
]
添加在JSFIDLE链接中
您需要首先确保这些工作正常
- 无脚本错误(在javascript控制台中检查)
- Collection.fetch请求更正url(请参阅Chrome web inspector中的参考资料部分)
- 检查响应
是否正确“application/json”,服务器是否确实提供json字符串mime/type
- 确保JSON响应的格式正确(我遇到了这个问题。它必须是数组而不是对象,例如:
)[{},{},{},{},{}]
- 最后从服务器刷新(清除缓存)
initialize:function(){
this.fetch();
}
这行不通。您需要在集合本身之外使用集合
比如说
var col = Backbone.Collection.extend({url:"data.json"});
var instance = new col({model:Tweet});
instance.fetch();
你需要确保这些先工作
- 无脚本错误(在javascript控制台中检查)
- Collection.fetch请求更正url(请参阅Chrome web inspector中的参考资料部分)
- 检查响应
是否正确“application/json”,服务器是否确实提供json字符串mime/type
- 确保JSON响应的格式正确(我遇到了这个问题。它必须是数组而不是对象,例如:
)[{},{},{},{},{}]
- 最后从服务器刷新(清除缓存)
initialize:function(){
this.fetch();
}
这行不通。您需要在集合本身之外使用集合
比如说
var col = Backbone.Collection.extend({url:"data.json"});
var instance = new col({model:Tweet});
instance.fetch();
如果数据格式正确,则不需要手动解析数据。您的
latest.json
响应是什么样子的?请检查浏览器控制台,查看请求的url是否正确。我在url
@fguillen开头遗漏了一个/
。谢谢你的回复。我检查了我的浏览器控制台,它加载正常。但是当我转储book.toJSON()时,它返回一个[],看起来它没有正确解析它。Of-topic:注意,title:“
不是初始化模型默认属性的正确方法。请改用。@fguillen。谢谢你的提示。干杯。如果数据格式正确,您不需要手动解析数据。您的latest.json
响应是什么样子的?请检查浏览器控制台,查看请求的url是否正确。我在url
@fguillen开头遗漏了一个/
。谢谢你的回复。我检查了我的浏览器控制台,它加载正常。但是当我转储book.toJSON()时,它返回一个[],看起来它没有正确解析它。Of-topic:注意,title:“
不是初始化模型默认属性的正确方法。请改用。@fguillen。谢谢你的提示。干杯,谢谢。测试它。但也不起作用。也许我会尝试使用JSFIDLE。我想补充的是,您可以向fetch()
调用添加success
和error
回调,以查看是否存在类似以下内容:instance.fetch({error:function(){console.log(“error”);})代码>@TonyMocha你怎么说它不起作用。请检查instance.models
以查看它是否包含来自服务器的模型#@Deeptechtons不确定我是否理解它。这是我为尝试显示对象而做的JSFIDLE。@TonyMocha很好,它发生了。不熟悉这个世界的人经常会感到困惑。下面是一个JS提琴,请注意,对于ajax请求echo/json/
意味着将json
替换为针对ajax请求发送的响应。测试它。但也不起作用。也许我会尝试使用JSFIDLE。我想补充的是,您可以向fetch()
调用添加success
和error
回调,以查看是否存在类似以下内容:instance.fetch({error:function(){console.log(“error”);})代码>@TonyMocha你怎么说它不起作用。请检查instance.models
以查看它是否包含来自服务器的模型#@Deeptechtons不确定我是否理解它。这是我为尝试显示对象而做的JSFIDLE。@TonyMocha很好,它发生了。不熟悉这个世界的人经常会感到困惑。这里有一个JS提琴供您使用,注意对于ajax请求echo/json/
意味着用针对ajax请求发送的响应替换json