0

次のような入力フィールドを持つフォームがあります。

<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の各回答の説明を読み取るにはどうすればよいですか?

4

2 に答える 2

1

リンクされた回答のコードで-を使用するか、GitHubのコードで-を使用して、コードに問題を見つけることができませんでした(を参照) 。ただし、マークアップは調整する必要がありました。serializeObjectserializeJSON

<form "data-qustion_form"=true>

に:

<form data-question_form="true">

PS @jchapaが指摘したように、これquestion["answers"]も間違っていました-そして括弧はバランスが取れていませんでした。ただし、ここに貼り付けたコードだけだと思います。実際のコードは正しくなければなりません(そうでないと、結果がまったく得られません)。

  $.each(o["question"]["answers"], function() {
    console.log("print test");  // I don't see this on console in Chrome inspector
  });
});
于 2013-03-03T06:36:07.657 に答える
0

nameさて、私はそれを解決しましたが、入力要素の属性に小さな変更を加えました。[]次のようにカウンターの前に追加されまし た:

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

今、私はそれをループすることができます:)

于 2013-03-03T06:35:29.663 に答える