无法在主干集合中获取 JSON
Can't fetch JSON In Backbone collection
我有以下骨干.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/items
,系统会提示下载 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 的请求时,我得到的响应似乎只是随机字符,并且我收到错误"语法错误:JSON.parse:意外字符"
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));
通常,当您收到 JSON.parse: 意外字符错误时,它表示 JSON 属性不是双引号限定的,因此基本上 JSON 可能如下所示:
"{ test: 1, testing: 2 }" *Invalid*
甚至这个:
"{ 'test': 1, 'testing': 2 }" *Invalid*
而不是这样:
'{ "test": 1, "testing": 2 }' *Valid*
或者这个:
"{ '"test'": 1, '"testing'": 2 }" *Valid*
第
一件事是第一件事。 您肯定有服务器配置问题。 听起来您的 MIME 类型未设置,并且您启用了(可能是 gzip)压缩。
使用谷歌浏览器浏览到提供 JSON 的网址。 浏览器应以纯文本形式显示 JSON,而不会提示您下载它。
接下来获取Chrome的JSONView扩展。浏览到提供 JSON 的 URL。 您应该看到带有匹配大括号的"漂亮"格式的 JSON。
完成此操作后,返回到 Web 应用并进行测试。 如果仍然遇到问题,请发布您的 Web 服务器信息(类型和版本)以及任何其他特殊信息。 我们将从那里开始。
相关文章:
- 如何使用 Node JS 获取 JSON 嵌套数组值
- 使用Javascript/JQuery获取JSON GET数据
- 在jQuery中获取JSON
- 如何使用jQuery按键搜索和获取json行数据
- 如何使用jquery获取Json的节点
- 通过字符串获取JSON对象
- 通过Azure存储以HTML形式获取JSON文件
- 获取JSON并使用Javascript解析为字符串
- 如何在angular中获取json对象的名称
- 如何使用angular获取json对象的名称
- 如何使用Ajax JQuery.ech()获取JSON值
- 可以't通过从googlemapapi获取json值
- 获取json结果的身份验证问题
- Javascript:获取 JSON 中的值计数
- 按服务获取JSON数据
- 如何使用javascript获取json元素
- 从javascript文件中获取JSON,并使用NodeJS在路由文件中显示
- 如何从给定的代码中获取JSON对象
- 获取 JSON 数据将数组项添加到变量
- 如何从具有动态可观察属性的淘汰对象中获取 JSON 字符串