您的 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"
become 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);