【问题标题】:Javascript JSON problemJavascript JSON 问题
【发布时间】:2011-10-24 10:15:32
【问题描述】:

服务器将此 JSON 返回给客户端:

{
    "comments": [
        {
            "id": 99,
            "entryId": 19,
            "author": "Вася",
            "body": "Комент Васи",
            "date": "20.10.2022"
        },
        {
            "id": 100,
            "entryId": 19,
            "author": "n54",
            "body": "w754",
            "date": "21.10.2023"
        }
    ],
    "admin": false
}

我正在尝试展示它:

if (xmlhttp.readyState==4 && xmlhttp.status==200){
    var json = eval("("+xmlhttp.responseText+")");
    for(var comment in json.comments){
        alert(comment["author"]);
    }
}

正如预期的那样,循环工作了 2 次,但此警报仅显示“未定义”。 但是如果我尝试执行 alert(json.admin);它将按计划显示为假。 我做错了什么?

【问题讨论】:

标签: javascript ajax json foreach cycle


【解决方案1】:

你需要做的

for(var comment in json.comments){
    alert(json.comments[comment]['author']);
}

comment 只是数组的索引,即 0, 1

【讨论】:

    【解决方案2】:

    如果你必须迭代数组中的内容,你应该迭代数组索引而不是迭代数组中的属性,

    所以使用下面的代码 sn-p 来遍历数组索引,这是正确的做法,

    for(var i = 0; i < json.comments.length; i++){
        alert(json.comments[i]["author"]);
    }
    

    像下面的代码 sn-p 那样遍历数组属性不是正确的方法,因为数组属性之一包含“删除”函数。

    for(var i in json.comments){
        alert(json.comments[i]["author"]);
    }
    

    在上面的代码中 i 将取值 0, 1, 2,..., 删除函数

    【讨论】:

      【解决方案3】:

      试试这个

      if (xmlhttp.readyState==4 && xmlhttp.status==200){
          var json = eval("("+xmlhttp.responseText+")");
          for(var i=0;i<json.comments.length;i++){
              alert(comment[i].author);
          }
      }
      

      【讨论】:

        【解决方案4】:

        在您的 JSON 中,cmets 是一个数组。最好使用编号索引 for 进行循环。

        if (xmlhttp.readyState==4 && xmlhttp.status==200){
            var json = JSON.parse(xmlhttp.responseText); //See my comment on OP
            for(var i = 0; i < json.comments.length; i++){
                alert(json.comments[i]["author"]);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2011-04-12
          • 2021-05-02
          • 2019-05-11
          • 2015-06-16
          • 1970-01-01
          • 1970-01-01
          • 2013-01-23
          • 2015-05-30
          • 2023-03-12
          相关资源
          最近更新 更多