我有一个带有两个JSON对象的端点,如下所示:
{
"main" {
"id": 1,
"title": Main Title,
},
{
"secondary" {
"id": 3,
"title": Secondary Title,
},
我正在使用骨干并且具有以下$ each函数,但是使用点符号,我似乎无法浏览到标题(例如main.title或secondary.title)。我错过了什么?
var collection = new contentArticles([], { id: urlid });
collection.fetch({
dataType: "json",
success: function (model, response) {
console.log(response);
$.each(response, function (index, value) {
console.log(value.main.title);
$("#test2").append('<li>' + value.main.title + '</li>');
});
在我的控制台中,它出现以下错误:Uncaught TypeError:无法读取属性&#39; title&#39;未定义的
答案 0 :(得分:1)
假设您的JSON在返回时实际上有效(它以您显示的方式无效),请尝试
$("#test2").append('<li>' + value.title + '</li>');
您的实际JSON应如下所示:
{
"main": {
"id": 1,
"title": Main Title,
},
"secondary": {
"id": 3,
"title": Secondary Title,
}
}
如果您只想要main的值,而不是使用$ .each(),请删除整个块并执行:
$("#test2").append('<li>' + response.main.title + '</li>');
你的最终代码看起来像是:
var collection = new contentArticles([], { id: urlid });
collection.fetch({
dataType: "json",
success: function (model, response) {
console.log(response);
if (response.main.title !== 'undefined'){
$("#test2").append('<li>' + value.main.title + '</li>');
}else{
console.log('Main is undefined');
}
}
});
最终编辑:看起来你想要像JSON一样:
{
"main": [{
"id": 1,
"title": "Main Title"
}, {
"id": 2,
"title": "Main Title 2"
}, {
"id": 3,
"title": "Main Title 3"
}],
"secondary": [{
"id": 5,
"title": "Secondary Title 5"
}, {
"id": 34,
"title": "Secondary Title 34"
}, {
"id": 36,
"title": "Secondary Title 36"
}]
}
如果是这种情况,您的代码将如下所示:
var collection = new contentArticles([], { id: urlid });
collection.fetch({
dataType: "json",
success: function (model, response) {
console.log(response);
$.each(function(index, value){
$.each(item_index, item_value){
$("#test2").append('<li>' + item_value.title + '</li>');
}
});
}
});
答案 1 :(得分:1)
问题在于输入JSON,它应该是
{
"main" :{
"id": 1,
"title": "Main Title"
},
"secondary":{
"id": 3,
"title": "Secondary Title"
}
}