0

我运行以下代码以将数据作为 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","col":"1","row":"1","size_y":"1","size_x":"1"},{"id":"2 ","col":"2","row":"1","size_y":"1","size_x":"1"}]

在接收页面上,我<?php print_r($_POST) ?>用来查看正在发送的页面并不断输出

Array
(
)

我一定错过了一些简单的东西,但一直无法弄清楚是什么。也许一双新的眼睛会看到我犯的一个简单的错误。

4

2 回答 2

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

于 2013-05-18T12:17:08.477 回答
0

如果您将 JSON 发送到服务器,请在后端使用以下命令获取您的 JSON:

json_decode(file_get_contents('php://input'));

它不会在 $_POST 超级全局中。

于 2013-05-18T12:27:21.810 回答