处理通过jquery发送的PHP中的json数组


Processing json array in PHP sent via jquery

我正在尝试使用通过JQuery发送的PHP中的JSON数组。发送到服务器的数据采用以下格式:

[{"id":"7","start":"00:00","end":"02:30","date":"2013-11-15"},{"id":"10","start":"23:00","end":"23:30","date":"2013-11-15"},{"id":"5","start":"13:00","end":"14:00","date":"2013-11-16"},{"id":"6","start":"18:00","end":"18:45","date":"2013-11-16"}]

我通过以下功能将上述数据发送到服务器:

$('#updateOverallChanges').click(function(event){
            var formArray = new Array();
            $('.updateForm').each(function( index ) {
                formArray.push($(this).JSONFromSerialize());
            });

            $.ajax({
                url: 'inner/formTester.php',
                data: JSON.stringify(formArray),
                type: 'POST',
                contentType: "application/json; charset=utf-8",
            });
        });

函数JSONFromSerialize负责将表单转换为有意义的json数据:

(function($) {
    $.fn.JSONFromSerialize = function() {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
            if (o[this.name]) {
                if (!o[this.name].push) {
                    o[this.name] = [ o[this.name] ];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };
})(jQuery);

我使用以下PHP代码来处理JSON数组:

<?php
$params = json_decode($_POST[]);
echo $params;
?>

但上面的代码给出了以下输出:

Fatal error: Cannot use [] for reading in C:'xampp'htdocs'holidaymanager'inner'formTester.php on line 2

第二次尝试

将有效载荷修改为名称值对:

 var postData = {
                data : formArray
            };
            $.ajax({
                url: 'inner/formTester.php',
                data: JSON.stringify(postData),
                type: 'POST',
                contentType: "application/json; charset=utf-8",
            });

后数据为:

{"data":[{"id":"7","start":"00:00","end":"02:30","date":"2013-11-15"},{"id":"10","start":"23:00","end":"23:30","date":"2013-11-15"},{"id":"5","start":"13:00","end":"14:00","date":"2013-11-16"},{"id":"6","start":"18:00","end":"18:45","date":"2013-11-16"}]}

php代码仍然失败:

<?php
$params = json_decode($_POST["data"]);
echo $params;
?>

错误:

Notice: Undefined index: data in C:'xampp'htdocs'holidaymanager'inner'formTester.php on line 2

请告诉我如何使用用PHP编写的发送到后端的JSON数组。

   $.ajax({
            data : {data:JSON.stringify(postData)},
   })

在php中

  $params = $_POST['data']; // add this line 
  $params = json_decode($params,true); 
  print_r($params);

  $params = json_decode($_POST,true);
  print_r($params);

您已经用json_Decode()传递了第二个参数true。。。

希望它能帮助你