0

おもちゃの例を使用して、問題を説明します。

ユーザーに関する詳細を取得するフォームがあります。

<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()必要に応じて物事をグループ化する自分自身を書くことです。

これを行うためのより良い、より単純な、またはよりエレガントな方法はありますか?

4

2 に答える 2

1

UserID私の標準的なアプローチは、入力名にアンダースコアを付けて追加することです。

したがって、これの代わりに:

<input type="text" name="fname[]" />

それはそのようになります:

<input type="text" name="fname_23423" />

次に、サーバー側で、で入力名を分割します_。最初の要素は入力名、2番目の要素は、で、これUserIDですべて設定できます。

于 2012-10-02T14:21:48.343 に答える
1

同様の問題がありましたが、私が行った方法は、各ユーザーに特定の配列を割り当てることでした

たとえば、このフィドル

<form action="#" method="post" id="myform">
    <input type="text" name="user1[fname]" />
    <input type="text" name="user1[sname]" />
    <input type="text" name="user1[birthdate]" />
    <select name="user1[hobbies]" multiple>
        <option>Programming</option>
        <option>Eating cats</option>
        <option>Explaining string theory to my grandmother</option>
    </select>
    <a href="#" id="submit">Submit</a>
</form>
于 2012-10-02T14:37:54.017 に答える