通过POST将JSON字符串传递给PHP

时间:2018-03-17 00:13:09

标签: javascript php json

我有一个页面,它是CRUD的一部分,我可以编辑我的数据并将其发送到我的php应用程序的更新操作。基本上,它是一个带有输入字段的HTML表单。 在这个页面上,我试图通过jQuery插件实现某种拖放列表排列。排序元素后,我通过js脚本创建一个数组,该脚本保存我的层次结构,它看起来像这样:

[
    {
        "id": 21,
        "name": "John"
    },
    [
        {
            "id": 25,
            "name": "Bill"
        },
        {
            "id": 20,
            "name": "Ann"
        }
    ],
    {
        "id": 18,
        "name": "Sally"
    },
    {
        "id": 24,
        "name": "Tom"
    }
]

现在,我怎样才能通过POST将此数组从javascript传递到我的更新操作,并使用其余的表单,以便以适当的JSON格式将其存储在数据库中?

1 个答案:

答案 0 :(得分:1)

选项1

您可以创建一个包含所有数据的JS对象(表单数据和分层数组)。 之后,您可以使用jQuery .ajax()方法或.post()方法发送它。

使用jquery

查询表单输入
var formValues = {
    nameField1: $(field1Selector).val(),
    nameField2: $(field2Selector).val(),
    //(...) the remaining fields

    //variable holding your array
    arrangement: dragAndDropArray
 };

然后,您可以通过

将该请求发送到服务器
$.ajax({
    url: actionUrl,
    method: 'POST',
    data: formValues //here you're setting the payload of your POST request
});

这是documentation for the .ajax() method

选项2

另一种选择是在表单中创建一个隐藏的输入字段,并将其值设置为JS数组的JSON字符串。

在表单中添加隐藏字段,如

<input type="hidden" id="hierarchical-array-input" name="hierarchivalArr" />

然后,每次更新数组时,都要设置隐藏输入的值,如下所示:

$('#hierarchical-array-input').val(JSON.stringify(hierarchicalArr));

您需要在两种情况下处理PHP中的值。我建议你试一试并调试PHP如何解析数据。

注意

您还可以将第一个方法与查询表单的插件一起使用,并为您生成JS对象。像,

jquery form serialize JSON

jquery input values