PHP将JSON String作为数组获取

时间:2015-07-13 00:13:16

标签: javascript php jquery ajax json

我有一个包含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。

2 个答案:

答案 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