首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >FormData发送的数组以逗号分隔的列表形式到达

FormData发送的数组以逗号分隔的列表形式到达
EN

Stack Overflow用户
提问于 2020-08-19 22:25:21
回答 2查看 336关注 0票数 0

我正在构建一些表单数据,用数组填充它,并通过POST发送它,通过:

代码语言:javascript
运行
复制
let fd = new FormData();
for (section in this.data.choices) {
    let key = section+(this.data.choices[section] instanceof Array ? '[]' : '');
    fd.append(key, this.data.choices[section]);
}
fetch('?get=plan', {method: 'post', body: fd}) //...

下面是this.data.choices的结构

代码语言:javascript
运行
复制
{
    "mode": "o7ew4xqybwt",
    "packages": [
        "wx2xv1cakbe"
    ],
    "usertypes": [
        "s"
    ],
    "subjects": [
        "bxn5g1igm4l",
        "u1osgpv37fl",
        "q2scwqb27k7",
        "fl9riri0wpr"
    ]
}

然而,在接收端,在PHP中,数组是扁平化的。print_r($_POST)提供:

代码语言:javascript
运行
复制
Array
(
    [mode] => o7ew4xqybwt
    [packages] => Array
        (
            [0] => wx2xv1cakbe
        )
    [usertypes] => Array
        (
            [0] => s
        )
    [subjects] => Array
        (
            [0] => bxn5g1igm4l,u1osgpv37fl,q2scwqb27k7,fl9riri0wpr
        )
)

毫无疑问,我遗漏了一些简单的东西,但任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2020-08-19 22:35:32

我认为您应该将数据作为JSON发送。它省去了很多麻烦,并避免了你引入的这种结构转换错误。相反,您可以将JS对象直接字符串化为JSON,然后将其发送到服务器。

然后在PHP端,您可以接收和解码它,然后像使用常规对象一样使用它(有关如何在PHP中正确地从POST请求接收JSON的指导,请参阅Receive JSON POST with PHP )。

票数 2
EN

Stack Overflow用户

发布于 2020-08-19 22:36:41

代码语言:javascript
运行
复制
fd.append(key, this.data.choices[section]);

上行表示将单个值添加到键中,而不考虑[]或normal键。您必须遍历它们,以将它们逐个添加为数组值。

代码语言:javascript
运行
复制
let fd = new FormData();
for (section in this.data.choices) {
    if(this.data.choices[section] instanceof Array){
        this.data.choices[section].forEach(value => fd.append(section + '[]', value));           
    }else{
        fd.append(section, this.data.choices[section]);    
    }    
}
fetch('?get=plan', {method: 'post', body: fd}) //

另一种方法是,使用标头Content-type:application/json按原样发送JSON。

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

https://stackoverflow.com/questions/63489153

复制
相关文章

相似问题

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