我有遵循Backbone.js代码
var List = Backbone.Collection.extend({ model: Item,url: '/api/items',});
然后在我看来,我试图从API中获取JSON并填充模型
this.collection = new List(); var that = this; this.collection.fetch({ success: function () { that.render(); console.log('Fetch successful!'); },error: function() { console.log('Failed to fetch!'); } });
但是,提取不起作用,并且触发“无法获取”!信息.任何人都可以看到我做错了吗?如果我去浏览器中的api /项目,我会得到提示下载JSON文件,所以它绝对在那里,当我打开它的新行分隔符.以下是发送回JSON的api代码片段
res.writeHead(200,{ 'Content-Type': 'application/x-json-stream' }); setTimeout(function () { var i; for (i=0; i<limit; i+=1) { res.write(JSON.stringify(createRandomItem(i+skip,sort)) + '\n'); } res.end(); },100 + Math.floor(Math.random() * 3000));
另外当我使用开发人员工具来检查发送到API的请求时,我回复的响应似乎是随机字符,我得到错误“SyntaxError:JSON.parse:Unexpected character”
eyJpZCI6IjAtd202MzNjYTF0Y3ZqOWs5Iiwic2l6ZSI6MTYsInByaWNlIjo5MzgsImZhY2
解决方法
你的响应写循环生成无效的json字符串,因为它只是连接json对象.
您可以收集数组中的所有对象并将其如下所示:
setTimeout(function () { var i,data = []; for (i=0; i<limit; i+=1) { data.push(createRandomItem(i+skip,sort)); } res.write(JSON.stringify(data)); res.end(); },100 + Math.floor(Math.random() * 3000));