我想使用Ajax提交一个表单,但我希望它在一个数组中,而不是序列化。
var form = $(this);
data: {data:form.serialize()};
在我的PHP中给了我这个:
firstname=John&lastname=Doe&phone=123123412345
我必须在PHP中运行此代码才能将其转换为我想要的格式:
parse_str($_POST['data'], $data);
只是看起来超级不必要,我想删除这一步。如何才能以数组格式传递表单?谢谢
发布于 2021-02-13 11:09:02
// var form = $(this);
var form = this;
data: {data: Object.fromEntries(new FormData(form))}
然后,您将获得如下所示的$_POST
变量:
Array
(
[data] => Array
(
[firstname] => John
[lastname] => Doe
[phone] => 123123412345
)
)
发布于 2021-02-13 10:21:43
你在过度设计你的Javascript。
在这一行中:
data: {data:form.serialize()};
您正在创建一个以data
为键、序列化数据为其值的对象。当您将其传递给jQuery以进行AJAX调用时,它将以该形式传递该值。因此,您在$_POST['data']
中找到了序列化字符串,并且必须将其解包。
您应该将序列化的数据发送到jQuery,而不是将其打包到对象中:
data: form.serialize()};
jQuery会识别这一点,并发送带有正确密钥的daya,以便您可以直接在$_POST['firstname']
、$_POST['lastname']
等格式中读取它。
https://stackoverflow.com/questions/66180585
复制相似问题