Php jQuery AJAX JSON数据未发送
我运行下面的代码以将数据作为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 (
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'));