【问题标题】:Pass a nested object to POST request [duplicate]将嵌套对象传递给 POST 请求 [重复]
【发布时间】: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 仅作为键值对工作。如果您想从它们那里获得更多功能,则必须自己实现或找到已经完成的库。我会说看起来数据正在正确发送和接收。

标签: javascript php jquery json


【解决方案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(){
                ...
    }

【讨论】:

    猜你喜欢
    • 2016-01-17
    • 2021-11-16
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多