我正在尝试使用通过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。。。
希望它能帮助你