提交表单与Ajax在数组格式,不序列化?



我想使用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']等中读取它。

相关内容

  • 没有找到相关文章

最新更新