0

我无法将 JSON 数据从 JavaScript 发送到 PHP。这是我的Javascript:

var noteData =  { 
    nData: {
        "postID": $postID,
        "commentPar": $commentPar,
        "commentValue": $commentValue
    } 
}
var sendData = JSON.stringify(noteData);

$.ajax({
    type: "POST",
    url: templateUrl+"/addnote.php",
    data: sendData,
    dataType : 'json',
    success: function(data) { 
        alert(data);
        console.log(sendData);
    },
    error: function(e) {
        console.log(e.message);
        console.log(noteData);
        console.log(sendData);
        alert("error");
    }
});

这是我测试数据是否甚至被传递给 PHP 的方法,它总是返回null

<?php
  $nData = json_decode($_POST['nData']);
  echo json_encode($nData);
?>

我究竟做错了什么?

4

2 回答 2

2

您将数据作为原始 JSON 发送到 PHP,而不是作为 POST 参数。

有两种选择。第一个使您的 PHP 完好无损:

var noteData =  { 
    nData: {
        "postID": $postID,
        "commentPar": $commentPar,
        "commentValue": $commentValue
    } 
}
var sendData = JSON.stringify(noteData);

$.ajax({
    type: "POST",
    url: templateUrl+"/addnote.php",
    data: {
        nData: sendData
    },
    dataType : 'json',
    success: function(data) { 
        alert(data);
        console.log(sendData);
    },
    error: function(e) {
        console.log(e.message);
        console.log(noteData);
        console.log(sendData);
        alert("error");
    }
});

第二个单独修改 PHP 端。您需要直接读取输入流以获取原始数据。

<?php
$nData = json_decode(file_get_contents('php://input'));
echo json_encode($nData);

根据服务器配置,这可能会略有不同。请参阅有关输入流包装器的文档。

于 2013-06-08T13:47:09.717 回答
0

告诉您的 post 请求您正在发送 json object contentType: "application/json"

于 2013-06-08T14:41:17.540 回答