【问题标题】:jQuery AJAX JSON data not sendingjQuery AJAX JSON 数据未发送
【发布时间】:2013-05-18 12:10:40
【问题描述】:

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

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

【问题讨论】:

  • 只是一个快速的猜测......我认为你必须用小写写帖子。否则......你试过$.post吗?
  • 您是按原样发布[{"id":"1","col":"1","row":"1","size_y":"1","size_x":"1"},{"id":"2","col":"2","row":"1","size_y":"1","size_x":"1"}] 吗?
  • 大写无所谓。
  • 启动 Fiddler、fiddler2.com 或类似工具来检查您的表单 Post。
  • @Bimal:这里的问题与跨域问题无关。

标签: php javascript jquery json


【解决方案1】:

我认为$_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

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 2013-03-06
    • 1970-01-01
    • 2013-01-09
    • 2020-09-19
    • 1970-01-01
    相关资源
    最近更新 更多