Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干收集是否自动解析加载的数据_Javascript_Backbone.js - Fatal编程技术网

Javascript 主干收集是否自动解析加载的数据

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

尝试使用主干集合初始化抓取json数据,但结果表明数据为空。 主干收集是自动将json数据解析到模型中,还是必须手动解析

 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中的参考资料部分)

  • 检查响应
    mime/type
    是否正确“application/json”,服务器是否确实提供json字符串

  • 确保JSON响应的格式正确(我遇到了这个问题。它必须是数组而不是对象,例如:
    [{},{},{},{},{}]

  • 最后从服务器刷新(清除缓存)

更新 下面是一个JsFiddle来演示它的用法

注意:只有当从要从中生成模型集合的服务器发送自定义响应时,才能显式编写解析

顺便说一下,我注意到你这样做了

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中的参考资料部分)

  • 检查响应
    mime/type
    是否正确“application/json”,服务器是否确实提供json字符串

  • 确保JSON响应的格式正确(我遇到了这个问题。它必须是数组而不是对象,例如:
    [{},{},{},{},{}]

  • 最后从服务器刷新(清除缓存)

更新 下面是一个JsFiddle来演示它的用法

注意:只有当从要从中生成模型集合的服务器发送自定义响应时,才能显式编写解析

顺便说一下,我注意到你这样做了

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