おもちゃの例を使用して、問題を説明します。
ユーザーに関する詳細を取得するフォームがあります。
<form action="#" method="post" id="myform">
<input type="text" name="fname" />
<input type="text" name="sname" />
<input type="text" name="birthdate" />
<select name="hobbies">
<option>Programming</option>
<option>Eating cats</option>
<option>Explaining string theory to my grandmother</option>
</select>
</form>
そして、それをajax呼び出しでサーバーに送信して、ページを更新せずに何らかの応答を返すことができるようにします。
$.post("myserverscript.php", $('#myform').serialize(), function(){...callback...});
これは正常に機能します。
ここで、同じページの複数のユーザーについて同じ情報を取得する必要があります。[]
問題ありません。入力名に追加するだけです。
<form action="#" method="post" id="myform">
<input type="text" name="fname[]" />
<input type="text" name="sname[]" />
<input type="text" name="birthdate[]" />
<select name="hobbies[]">
<option>Programming</option>
<option>Eating cats</option>
<option>Explaining string theory to my grandmother</option>
</select>
</form>
そして繰り返しますが、すべてが世界に順調です。
ここで、ユーザーがそれぞれ複数の趣味を選択できるようにします。
<form action="#" method="post" id="myform">
<input type="text" name="fname[]" />
<input type="text" name="sname[]" />
<input type="text" name="birthdate[]" />
<select name="hobbies[]" multiple>
<option>Programming</option>
<option>Eating cats</option>
<option>Explaining string theory to my grandmother</option>
</select>
</form>
そして、これは物事が少し洋ナシの形になり始めるところです。今電話するとserialize()
、すべての趣味が1つの配列にまとめられているため、どのユーザーがどの趣味を持っているかはわかりません。
[][]
代わりにを使用してみまし[]
たが、個々のアイテムをhobbies配列内の独自の配列に配置するだけなので、user->hobbyリンクが失われます。
これを行うために私が見ることができる唯一の方法は、serialize()
必要に応じて物事をグループ化する自分自身を書くことです。
これを行うためのより良い、より単純な、またはよりエレガントな方法はありますか?