我运行以下代码以将数据作为JSON对象发送
var jdata = JSON.stringify(grid.serialize());
$.ajax({
'type': 'POST',
'url': 'print.php',
'data': jdata, //assuming you have the JSON library linked.
'contentType': "application/json",
'success': function (data) {
alert(data);
},
'error': function (x, y, z) {
alert(x.responseText);
// x.responseText should have what's wrong
}
});
alert(JSON.stringify(grid.serialize()));
在打印ajax函数后显示警报
[{ “ID”: “1”, “栏”: “1”, “行”: “1”, “size_y”: “1”, “size_x”: “1”},{ “ID” “2”, “栏”: “2”, “行”: “1”, “size_y”: “1”, “size_x”: “1”}]
在接收页面上,我使用<?php print_r($_POST) ?>
查看正在发送的内容并继续输出
Array
(
)
我必须错过一些简单但却无法弄清楚的东西。也许一双新鲜的眼睛会看到我犯下的一个简单的错误。
答案 0 :(得分:2)
我认为只有在您发送编码为$_POST
的数据时才会填充x-www-form-urlencoded
。因此,只需将JSON字符串分配给一个键(jQuery负责正确编码):
'data': {data: jdata}
并删除'contentType': "application/json"
部分。
然后用PHP获取数据:
$data = json_decode($_POST['data'], true);
或者,在PHP中获取请求的原始主体并处理它:How to retrieve Request Payload
答案 1 :(得分:0)
如果要将JSON发送到服务器,请在后端使用以下命令获取JSON:
json_decode(file_get_contents('php://input'));
它不会出现在$ _POST超级全局中。