如何将序列化数组发送到php文档?

时间:2018-05-01 08:52:43

标签: javascript php

我有一个名为seat的JavaScript数组,里面有很多值。

如下所示,我已经序列化发送到名为confirm.php的php文件。

$('btnsubmit').click(function() {
  var seat = [];
  var seatar = JSON.stringify(seat);
  $.ajax({
    method: "POST",
    url: "confirm.php",
    data: seatar
  })
})

这是我的php文件中的代码。

$seatarr = "";
if(isset($_POST['data']))
{
    $seatarr = $_POST["data"];
    print_r($seatarr);
}

我已经尝试过最好的水平,看看本节前面提到的问题。但无论我如何努力修复它,这段代码都无法运行。为什么不呢?

2 个答案:

答案 0 :(得分:4)

您只是发送原始JSON,但您希望获得一个带有data字段的URI编码表单。如果您更改ajax来电使用data: {data: seatar}

,则可以获得该功能
$('btnsubmit').click(function() {
  var seat = [];
  var seatar = JSON.stringify(seat);
  $.ajax({
    method: "POST",
    url: "confirm.php",
    data: {data: seatar}
  })
});

jQuery会自动将该对象转换为带有单个字段的URI编码提交。

如果要在服务器上解析它,请使用json_decode

if(isset($_POST['data']))
{
    $seatarr = json_decode($_POST["data"]);
    print_r($seatarr);
}

同样,如Mr. Blue pointed out,您的按钮选择器可能不正确。您有$('btnsubmit')正在寻找<btnsubmit>...</btnsubmit>元素。您可能需要$("#btnsubmit")(如果按钮上有id="btnsubmit")或$("[name=btnsubmit]")(如果按钮上有name="btnsubmit")。

答案 1 :(得分:0)

另一个解决方案是重写这样的数据:

seatar = $(this).serialize() + "&" + $.param(seatar);

和像T.J Crowder一样的解码确实提出了:

if(isset($_POST['data']))
{
    $seatarr = json_decode($_POST["data"]);
    print_r($seatarr);
}