【问题标题】:PHP POST serialize() data from dynamic form ajaxPHP POST serialize() 来自动态表单 ajax 的数据
【发布时间】:2026-01-11 18:00:02
【问题描述】:

我有一个关于 jQuery 和 HTML5 的脚本,可以动态创建一个表单。

然后我使用:

var OForm = $('#OForm');

// Find disabled inputs, and remove the "disabled" attribute
var disabled = OForm.find(':input:disabled').removeAttr('disabled');

// serialize the form
var Values = OForm.serialize();

// re-disabled the set of inputs that you previously enabled
disabled.attr('disabled','disabled');

console.log(Values);

然后我使用 ajax 将值发布到 PHP。

问题:

如果表单不是动态的。我可以得到值:

$name = $_POST['name'] 

等等..

但问题是我的表单中有一些已编号的字段。

例子:

  • 姓名1
  • 姓名2
  • 姓名3

也可以是:

  • 姓名3
  • 姓名10
  • name23

如何获取这些值以将它们插入 MySQL?

已解决

使用数组而不是编号键。

<input name="name[10]" value="Josh"><input name="name[23]" value="Peter">

已提交:

$_POST["name"] = array(
    "10" => "Josh",
    "23" => "Peter",
);

可以使用foreach遍历所有名字:

foreach ($_POST["name"] as $key => $value) {}

【问题讨论】:

  • 为什么不使用数组? &lt;input type="text" name="name[]"&gt;
  • 我不认为我了解您的解决方案。表单已经生成,并且根据字段的数量生成字段名称。
  • 好的,我明白了,您指的是元素名称而不是 id。

标签: php jquery ajax serialization


【解决方案1】:

使用数组而不是编号键。

<input name="name[10]" value="Josh"><input name="name[23]" value="Peter">

已提交:

$_POST["name"] = array(
    "10" => "Josh",
    "23" => "Peter",
);

可以使用foreach遍历所有名字:

foreach ($_POST["name"] as $key => $value) {}

【讨论】:

  • 谢谢。我可以对不同的元素使用相同的 name="name[]" 吗?创建一个不同输入的数组?
  • 如果要自动编号,可以使用name="name[]",php会生成从零开始的数组。
  • 是的,我明白这一点。但是对于每个人,我都有名字和年龄。我可以创建一个像 0 - Joao - 16 / 1 - Anna - 23 这样的数组吗?
  • 您可以使用两个数组并在 php 中组合它们(name="name[]"name="age[]")或在 javascript 中生成索引(name="person[1][name]"name="person[1][age]")。您不能在第二种方法(name="person[][name]"name="person[][age]")中使用自动生成的索引,因为数组将是 $_POST["person"] = array(0 =&gt; array("name" =&gt; "value"), 1 =&gt; array("age" =&gt; "value"))
  • 完美!哪种方法最适合您?