0

JavaScript から PHP に JSON データを送信できません。これが私の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

データを POST パラメータとしてではなく、生の JSON として PHP に送信しています。

2 つの選択肢があります。最初のものは、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");
    }
});

2 つ目は、PHP 側のみを変更します。生データを取得するには、入力ストリームを直接読み取る必要があります。

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

これは、サーバーの構成によって若干異なる場合があります。入力ストリーム ラッパーに関するドキュメントを参照してください。

于 2013-06-08T13:47:09.717 に答える
0

json オブジェクト contentType: "application/json" を送信していることを投稿リクエストに伝えます。

于 2013-06-08T14:41:17.540 に答える