Php jQuery AJAX JSON数据未发送

Php jQuery AJAX JSON数据未发送,php,javascript,jquery,json,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 (

我运行下面的代码以将数据作为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”}]

在接收页面上,我使用
查看页面正在发送的内容,并不断输出

Array
(
)

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

我认为只有当您发送编码为
x-www-form-urlencoded
的数据时,才会填充
$\u POST
。因此,只需将JSON字符串分配给一个键(jQuery负责对其进行正确编码):

并删除
'contentType':“application/json”
部分

然后使用以下方法在PHP中获取数据:

$data = json_decode($_POST['data'], true);


或者,用PHP获取请求的原始主体并对其进行处理:

如果要向服务器发送JSON,则在后端使用以下方法获取JSON:

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

它不会出现在“$\u POST super global”中。

只是一个快速猜测。。。我想你必须用小写字母写这篇文章。否则。。。您是否尝试过使用
$.post
?您是否按原样发布
[{“id”:“1”,“col”:“1”,“row”:“1”,“size_y”:“1”,“size_x”:“1”,“size_x”:“1”},{“id”:“2”,“col”:“2”,“row”:“1”,“size_x”:“1”}]
?是否以大写形式发布并不重要。启动Fiddler,或者一个类似的工具来检查表单帖子。@Bimal:这里的问题与跨域问题无关。我尝试了这个方法,它传递了json数组,但将双引号的一部分倒灰。这时,您可能应该禁用魔引号:
json_decode(file_get_contents('php://input'));