我有一个通过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[]"]
console.log
的{{1}}看起来像预期的那样:
this["tags[]"]
此外,复制标记不准确,因为访问位于console.log(this["tags[]"]);
// ["tag1", "tag2", "tag3"]
回调中。如何删除此内容?
答案 0 :(得分:0)
似乎在执行函数console.log(tags)
之前调用.done()
。