我的输入字段表格如下:
<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中的每个答案描述?
答案 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">
现在我可以遍历它了:)