无法在JSON,jQuery中循环遍历数组

时间:2013-03-03 05:53:41

标签: jquery json serialization loops

我的输入字段表格如下:

<form "data-qustion_form"=true>
  <input name="question[description]" value="quesd">
  <input name="question[answers][0][description]" value="ansd1">
  <input name="question[answers][1][description]" value="ansd2">
</form>

我使用https://github.com/marioizquierdo/jquery.serializeJSON将表单数据转换为json。还尝试使用https://stackoverflow.com/a/8407771/707636。两者都很棒。但是我无法在json中遍历数组。

我跟随js

$("[data-question_form]").on("submit", function(e) {
  var o = $(this).serializeObject();  // $(this).serializeJSON(); both results same
  console.log(o);
  console.log(o["question"]);
  console.log(o["question"]["answers"]);
  $.each(question["answers"], function() {
    console.log("print test");  // I don't see this on console in Chrome inspector
  }
  e.preventDefault();
}

Chrome检查器中控制台上的输出如下:

Object {utf8: "✓", question: Object}
Object {description: "quesd", answers: Array[0]}
[1362289041238: Object, 1362289045644: Object]

进一步展开[1362289041238: Object, 1362289045644: Object]会显示length: 0

如何遍历此数组以读取jQuery中的每个答案描述?

2 个答案:

答案 0 :(得分:1)

我无法在您的代码中找到任何问题(请参阅example),使用serializeObject - 使用链接答案中的代码 - 或使用serializeJSON - 来自GitHub的代码。但是,您的标记必须进行调整:

<form "data-qustion_form"=true>

为:

<form data-question_form="true">

P.S。正如@jchapa指出的那样,question["answers"]也是错的 - 括号没有平衡。但我假设它只是你在这里粘贴的代码,你的实际代码必须是正确的(或者根本不会得到任何结果)。

  $.each(o["question"]["answers"], function() {
    console.log("print test");  // I don't see this on console in Chrome inspector
  });
});

答案 1 :(得分:0)

好的,我刚刚解决了它,但对输入元素的name属性进行了一些小改动。在计数器前添加了[],如下所示:

<input name="question[answers][][0][description]" value="ansd1">
<input name="question[answers][][1][description]" value="ansd2">

现在我可以遍历它了:)