jQueryコードはすでにフィールドに明示的に名前を付けています。例えば:
$("<input>").attr("name", "a").appendTo(newDiv);
これにより、次の名前の入力が作成されますa
。
<input name="a" />
jQueryは、動的に作成された各入力に同じ名前を付けます。同じ名前の3つのフィールドを含む次のフォームを送信すると、サーバーはを受け取りa=value1&a=value2&a=value3
ます。
<form>
<input name="a" value="value1" />
<input name="a" value="value2" />
<input name="a" value="value3" />
<input type="submit" />
</form>
これはほとんどのサーバーテクノロジーで機能しますが、PHPでは機能しません。PHPは、既存の値を最後の値で上書きします。a
したがって、 PHPでの値を調べると、が表示されるだけvalue3
です。ただし、良いニュースは、入力名を少し変更して、PHPにすべての値を認識させることができることです。PHPでは、入力名に角かっこを追加すると(name="a"
になりますname="a[]"
)、PHPは値を配列に解析します。したがって、次のわずかに変更された形式の場合:
<form>
<input name="a[]" value="value1" />
<input name="a[]" value="value2" />
<input name="a[]" value="value3" />
<input type="submit" />
</form>
PHPでの値を見ると、、、、およびa
を含む値の配列が得られます。したがって、名前の末尾に角かっこを使用するようにjQueryコードを変更するだけです。value1
value2
value3
$("<input>").attr("name", "a[]").appendTo(newDiv);