我有一个包含17个复选框的表单。当其中一个更改时,JavaScript应该将值提交给服务器(运行PHP)。
我想使用JSON,因为复选框提供了两个必须在PHP中分离的数组
在JS中,我创建了一个JSON-String,我想通过POST提交并在PHP中读取和解码。
字符串看起来像这样atm:[["2015-06-26","2015-06-27"],["2","3","4","5","6","7","8","9","10","11","12","13","14"]]
- 这就是我想要的。
这就是我的AJAX功能:
var fullArray = [dateArray, trackArray];
var jsonFullString = JSON.stringify(fullArray);
//jsonFullString == [["a","b","c"],["d","e","f","g"]]
$.ajax({
type:'POST',
url:'shownitems.php',
data: jsonFullString,
success: function(data){
//More script. This comment is reached, because
alert(data);
// works.
}
});
当我将它转到PHP并搜索$_POST[0]
时,JS中的成功函数并没有显示任何内容。当我搜索$_POST
时,我得到了#34;数组......"回来。
这就是我的PHP的样子(这是我的测试片段):
<?php
echo $_POST;
echo ".";
echo $_POST[0];
echo ".";
echo $_POST[0][0];
$array = array();
?>
我也在使用jQuery。
答案 0 :(得分:1)
在你的JS中:
/* dateArray and trackArray must be variables with values */
$.ajax({
method: "POST",
url: "shownitems.php",
data: { date: dateArray, track: trackArray }
}).done(function(response) {
alert(response);
});
在你的PHP中:
<?php
var_dump('Date: '.$_POST['date']);
var_dump('Track: '.$_POST['track']);
?>
答案 1 :(得分:0)
您应该获取您的请求内容而不是$_POST
变量。
这样的事情
$json = file_get_contents('php://input');
$obj = json_decode($json); //Will contain your array of two arrays
如果你想获得你正在做的帖子变量,你可以改变你的AJAX请求并使用:
$.ajax({
type:'POST',
url:'shownitems.php',
data: {
data: jsonFullString
},
success: function(data){
//More script. This comment is reached, because
alert(data);
// works.
}
});
你的PHP将是:
$json = $_POST["data"];
$obj = json_decode($json); //Will contain your array of two arrays