我想使用Ajax提交一个表单,但我希望它是一个数组,而不是序列化。
var form = $(this);
data: {data:form.serialize()};
在我的PHP中给了我这个:
firstname=John&lastname=Doe&phone=123123412345
,我必须在PHP中运行这段代码以获得我想要的格式:
parse_str($_POST['data'], $data);
似乎非常不必要,我想删除这一步。如何以数组格式传递表单?由于
// var form = $(this);
var form = this;
data: {data: Object.fromEntries(new FormData(form))}
那么你将得到$_POST
变量如下:
Array
(
[data] => Array
(
[firstname] => John
[lastname] => Doe
[phone] => 123123412345
)
)
你的Javascript设计过度了。
这一行:
data: {data:form.serialize()};
您正在创建一个以data
为键并将序列化的数据作为其值的对象。当你将它传递给jQuery进行AJAX调用时它会以那种形式传递。因此,你在$_POST['data']
中找到你的序列化字符串,你必须解包它。
你应该把你的序列化数据发送给jQuery,而不是把它打包在一个对象中:
data: form.serialize()};
jQuery将识别并发送具有正确键的daya,以便您可以直接在$_POST['firstname']
,$_POST['lastname']
等中读取它。