首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将多维表单数据序列化为JSON对象数组以使用application/json

将多维表单数据序列化为JSON对象数组以使用application/json
EN

Stack Overflow用户
提问于 2015-09-21 11:21:58
回答 1查看 8.4K关注 0票数 5

我正在构建一个Laravel应用程序。在后端,如果请求的内容类型为TRUE,则$controller->wantsJson()方法为application/json。因此,为了满足这一要求,我的jQuery AJAX调用如下。

jQuery.ajax({
    type:        "POST",
    method:      "PUT",
    url:         $form.attr('action'),
    data:        $form.serialize(),
    dataType:    "json",
    contentType: "application/json; charset=utf-8"
})

这正确地触发了我需要的wantsJson()响应。那么问题就出在jQuery不能以application/json的形式正确地提供POST数据。它试图将其写成一个查询字符串,当它接收到该内容类型时,这对PHP后端不起作用。

为了满足这一要求,我需要在data字段中添加一个JavaScript对象数组。

JSON.stringify(dataObj)

所以现在的问题是,我没有一种简明的方法将多维形式转换为对象数组。如果我只是尝试转换$.serializeArray()的输出,我会得到这样的结果,这是后端无法解释的。

{
    'something' : 1,
    'field[foo]' : 2,
    'field[bar][]' : "a",
    'field[bar][]' : "b",
    'field[bar][]' : "c",
}

这当然是行不通的。我需要某种类型的RegEx解析器,可以转换此形式...

<input name="something" value="1" />
<input name="field[foo]" value="2" />
<input name="field[bar][]" value="a" />
<input name="field[bar][]" value="b" />
<input name="field[bar][]" value="c" />

变成..。

{
    'something' : 1,
    'field'     : {
        'foo'   : 2,
        'bar'   : [
            'a',
            'b',
            'c',
        ]
    }
}

你可能认为这样的东西已经存在了,但我找不到任何令人满意的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-21 12:24:09

我也有同样的问题,但是这个包做到了:jQuery Serialize Object

它很容易使用,只需在表单上调用它(在加载脚本之后)

$('form#contact').serializeJSON(); // to get the form as a JS object
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32686855

复制
相关文章

相似问题

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