如何使用每个响应在AJAX响应中循环JSON数组对象?

时间:2017-08-10 14:47:01

标签: javascript json ajax

我有一个通过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);导致undefinedconsole.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"] 回调中。如何删除此内容?

1 个答案:

答案 0 :(得分:0)

似乎在执行函数console.log(tags)之前调用.done()