jQuery AJAX JSON数据不发送

时间:2013-05-18 12:10:40

标签: php javascript jquery json

我运行以下代码以将数据作为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
(
)

我必须错过一些简单但却无法弄清楚的东西。也许一双新鲜的眼睛会看到我犯下的一个简单的错误。

2 个答案:

答案 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超级全局中。