将嵌套对象传递给 POST 请求 [重复]

Posted

技术标签:

【中文标题】将嵌套对象传递给 POST 请求 [重复]【英文标题】:Pass a nested object to POST request [duplicate] 【发布时间】:2014-05-07 00:53:39 【问题描述】:

如何通过 POST 请求发送嵌套对象?

var name = "test",
    path = "?diffCurr%5B%5D=FALSE&diffProv%5B%5D=FALSE",
    data = 
        datatype:"report",
        "value":
                "name":name,
                "query":path
            
        ;

    $.ajax(
        type:"POST",
        url: "resources/savedata.html",
        data: data,
        success: function(data)
                    ...
        ,
        complete: function()
                    ...
        
    )

当我签入 chrome 时,在“表单数据”下的网络选项卡中,我看到了这个:

datatype:report
value[name]:test
value[query]:?diffCurr%5B%5D=FALSE&diffProv%5B%5D=FALSE

基本上,我希望$_POST["value"] 包含一个带有namequery 的对象。

【问题讨论】:

php 中默认的 POST 仅作为键值对工作。如果您想从它们那里获得更多功能,则必须自己实现或找到已经完成的库。我会说看起来数据正在正确发送和接收。 【参考方案1】:

基本上,我希望 $_POST["value"] 包含一个带有名称和查询的对象。

确实如此。

您只是在查看以application/x-www-form-urlencoded 编码的原始数据,使用 PHP 的复杂对象方括号语法。

当 PHP 将其反序列化以填充 $_POST 时,它将以您期望的形式进行。

【讨论】:

谢谢。我实际上并没有使用 PHP,而是受到了一些启发。我想确保我没有在客户端做任何事情。【参考方案2】:

最简单的方法之一是在 Json 字符串中序列化您的嵌套对象

 $.ajax(
    type:"POST",
    url: "resources/savedata.html",

    data: JSON.stringify(data),

    success: function(data)
                ...
    ,
    complete: function()
                ...
    

【讨论】:

以上是关于将嵌套对象传递给 POST 请求 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个不同的对象传递给邮递员中的 POST 请求以测试 RESTful API?

将额外参数传递给jquery ajax promise回调[重复]

C ++将抽象类型的动态分配对象传递给函数并存储在向量中[重复]

C#asp.net将具有长属性的对象传递给前端会改变它的值[重复]

Codeigniter - 如何将 JSON 作为参数传递给视图 [重复]

有没有办法避免将所有参数传递给函数[重复]