【问题标题】:Json iteration over multidimensional array gives undefined error多维数组上的 Json 迭代给出未定义的错误
【发布时间】:2012-02-28 16:48:14
【问题描述】:

我查看了很多示例,但找不到任何可以解决问题的方法。我有以下格式的 json 数组;

{ "value" : [
    { "...some variables...",
      "comments" : [
        { "user_name"   : "arascanakin",
          "picture_url" : "...some url..."
        }
      ],
      "error" : false,
      "msg"   : "some message"
    }

附:可能存在语法错误,我已经手动编写了 JSON 数组。没错。

我有以下 jQuery 来遍历数组:

$.each($task_array, function (i, task) 
{
    // some stuff
    $.each(task.comments, function(i, $task_comment)
    {
        // some stuff
        // $task_comment is undefined here
    }); 
});

问题是当我将每个评论元素设置为$task_comment 时,task.comments 未定义。

有解决这个问题的想法吗?这对我来说似乎是正确的,但我读到 JavaScript 不允许多维数组。

【问题讨论】:

  • 如果您的 JSON 数据正确,那么您的问题与 JSON 无关,而是与如何访问 JavaScript 对象/数组有关。你是对的,JavaScript 没有多维数组,但你当然可以有数组的数组。这里没什么好说的,真的。如果task.comments 是一个数组,那么$task_comment 将是数组条目的值:jsfiddle.net/7yJkG。数据似乎与您想象的不一样,请仔细检查。
  • 你试过经典的javascript吗?像tsk = task.comments; for(var i = 0; i < tsk.length; i++) { //do something with tsk[i]; }
  • 我通过 json_encode($return) 语句发送这个 json。我不手动给json。
  • $task_comment.user_name$task_comment.content 给出了正确的值,但我仍然收到此错误;无法读取未定义 line_no 的属性“长度”:每次迭代第二次@FelixKling
  • 请创建一个jsfiddle.net 演示,并提供更完整的示例(更多数据,更多代码)。

标签: javascript jquery json multidimensional-array


【解决方案1】:

我修改了你的代码,它对我来说没问题,一旦我修复了你的 json...

http://jsfiddle.net/zyBmn/1/

我想在此处发布 json,但格式不正确...请参阅小提琴

编辑:用几个 cmets 整理一下:http://jsfiddle.net/zyBmn/3/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多