首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Ajax以数组格式提交表单,而不是序列化?

使用Ajax以数组格式提交表单,而不是序列化?
EN

Stack Overflow用户
提问于 2021-02-13 08:01:10
回答 2查看 57关注 0票数 0

我想使用Ajax提交一个表单,但我希望它在一个数组中,而不是序列化。

代码语言:javascript
运行
复制
var form = $(this);
data: {data:form.serialize()};

在我的PHP中给了我这个:

代码语言:javascript
运行
复制
firstname=John&lastname=Doe&phone=123123412345

我必须在PHP中运行此代码才能将其转换为我想要的格式:

代码语言:javascript
运行
复制
parse_str($_POST['data'], $data);

只是看起来超级不必要,我想删除这一步。如何才能以数组格式传递表单?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-13 11:09:02

代码语言:javascript
运行
复制
// var form = $(this);
var form = this;
data: {data: Object.fromEntries(new FormData(form))}

然后,您将获得如下所示的$_POST变量:

代码语言:javascript
运行
复制
Array
(
    [data] => Array
        (
            [firstname] => John
            [lastname] => Doe
            [phone] => 123123412345
        )

)
票数 2
EN

Stack Overflow用户

发布于 2021-02-13 10:21:43

你在过度设计你的Javascript。

在这一行中:

代码语言:javascript
运行
复制
data: {data:form.serialize()};

您正在创建一个以data为键、序列化数据为其值的对象。当您将其传递给jQuery以进行AJAX调用时,它将以该形式传递该值。因此,您在$_POST['data']中找到了序列化字符串,并且必须将其解包。

您应该将序列化的数据发送到jQuery,而不是将其打包到对象中:

代码语言:javascript
运行
复制
data: form.serialize()};

jQuery会识别这一点,并发送带有正确密钥的daya,以便您可以直接在$_POST['firstname']$_POST['lastname']等格式中读取它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66180585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档