我有一个名为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);
}
我已经尝试过最好的水平,看看本节前面提到的问题。但无论我如何努力修复它,这段代码都无法运行。为什么不呢?
答案 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);
}