这个问题已经在这里有了答案:
我有一个通过ajax返回的JSON对象。 当我尝试在响应中访问字符串数组时,我不确定。 我可以从控制台日志中看到该阵列存在并已填充。
$.ajax({
type: 'GET',
url: url,
dataType: 'JSON'
}).done(function( response ) {
$.each(response, function(){
myConcatenatedTags = ''
console.log(this);
console.log(this.tags);
for (var tag in this.tags) {
myConcatenatedTags += tag;
}
});
});
console.log(myConcatenatedTags);
响应对象
Object
_id: "598be40d9c7685725199cea3"
comments: "sometext"
number: "sometext"
quote: "sometext"
source: "sometext"
tags[]: Array[3]
0: "tag1"
1: "tag2"
2: "tag3"
length: 3
然而console.log(this.tags); 结果为undefined和console.log(myConcatenatedTags); 打印一个空数组。
如果我尝试访问索引:
console.log(this.tags[0]);
// response
// Uncaught TypeError: Cannot read property '0' of undefined
是什么赋予了?
更新
问题是我如何引用该元素。
元素像这样被引用: this.source
但是列表被引用为键,而不是点符号: this["tags[]"]
并且this["tags[]"]的console.log看起来像预期的那样:
console.log(this["tags[]"]);
// ["tag1", "tag2", "tag3"]
此外,重复的标记是不准确的,因为访问是在.done回调中进行的。 我如何删除它?