2

私はこのフォームを持っています:

...
        <td><input type="text" name="code[]" value="" /></td>
        <td>
              <select class="selectProductOrders" name="selectProductOrders[]">
                  <option value="default" disabled selected>Select a product</option> 
              </select>
        </td>
        <td><input type="number" pattern="[0-9]*" name="rsp[]" value="" /></td>
        <td><input type="number" pattern="[0-9]*" name="trade[]" value="" /></td>
        <td><input type="number" pattern="[0-9]*" name="discount[]" value="0" /></td>
        <td><input type="number" pattern="[0-9]*" name="qty[]" value="" /></td>
        <td><input type="number" pattern="[0-9]*" name="cost[]" value="" /></td>
...

その上下にはもっとありますが、これは重要な部分です。テーブルのこの行は、注文されている商品の数に応じて繰り返されるため、サーバー側で各注文アイテム要素の配列を解析する方が簡単だと思いました。また、フォームが非常に大きいためjQuery.serialize()、json形式でデータを送信するために使用することにしました。

残りのフォームはokで送信されますが、上記の各入力要素の配列は送信されず、最後の行が送信されるだけです。

これに対する解決策のアイデアはありますか?フォームから値を手動でjson形式に入力するだけでよいと思いますが、シリアル化の問題に頭を悩ませたいと思いました。

ありがとう!

4

1 に答える 1

2

jQuery.serialize()入力がすべて同じ名前の場合は使用できないと思います。

サーバーに配列を送信するには、入力に番号を付けることをお勧めします。

<td><input type="text" name="code[0]" value="" /></td>
    <td>
          <select class="selectProductOrders" name="selectProductOrders[0]">
              <option value="default" disabled selected>Select a product</option> 
          </select>
    </td>
    <td><input type="number" pattern="[0-9]*" name="rsp[0]" value="" /></td>
    <td><input type="number" pattern="[0-9]*" name="trade[0]" value="" /></td>
    <td><input type="number" pattern="[0-9]*" name="discount[0]" value="0" /></td>
    <td><input type="number" pattern="[0-9]*" name="qty[0]" value="" /></td>
    <td><input type="number" pattern="[0-9]*" name="cost[0]" value="" /></td>


<td><input type="text" name="code[1]" value="" /></td>
    <td>
          <select class="selectProductOrders" name="selectProductOrders[1]">
              <option value="default" disabled selected>Select a product</option> 
          </select>
    </td>
    <td><input type="number" pattern="[0-9]*" name="rsp[1]" value="" /></td>
    <td><input type="number" pattern="[0-9]*" name="trade[1]" value="" /></td>
    <td><input type="number" pattern="[0-9]*" name="discount[1]" value="0" /></td>
    <td><input type="number" pattern="[0-9]*" name="qty[1]" value="" /></td>
    <td><input type="number" pattern="[0-9]*" name="cost[1]" value="" /></td>

これにより、すべての値がサーバーに送信されます。

于 2013-02-19T15:37:57.537 に答える