在ajax发布请求后解析php中的json

时间:2014-06-12 09:56:52

标签: javascript php jquery ajax json

假设有ajax请求的javascript -

index.js -

var dataFeedback = $("#feedback_popup_message_body").val();
var jsonObj = JSON.stringify({dataFeedback: dataFeedback});
$.ajax({
    url: "index.php",
    type: 'POST',
    data: jsonObj,
    dataType: 'json',
    success: function (data) {
        console.log(data);
    }
});

在服务器端,php页面 -

的index.php -

<?php
    $myPostData = json_decode($_POST["dataFeedback"]);
    $feedback = $myPostData["dataFeedback"];
    echo $feedback;
?>

我尝试使用请求发送json对象,并在服务器端解析后,将其返回到客户端页面并记录其数据。

在上面的概念中,它不记录数据值。

我在Chrome > F12 > Networks > index.php > Response中查了一下,发现了这个 -

<br />
<b>Notice</b>:  Undefined index: dataFeedback in <b>...\index.php</b> on line <b>11</b><br />

如何让它记录从服务器返回的data

更新:最终导致其起作用的代码 -

index.js -

var dataFeedback = $("#feedback_popup_message_body").val();

$.ajax({
    url: "bin/bll/suggestionSummary.php",
    type: 'POST',
    data: {dataFeedback: dataFeedback},
    success: function (data) {

        console.log(data);
    }
});

的index.php -

<?php
    $myPostData = $_POST['dataFeedback'];
    echo $myPostData;

3 个答案:

答案 0 :(得分:5)

如果你的价值比你为什么使用JSON.stringify? 试试这个......

var dataFeedback =  $("#feedback_popup_message_body").val();
var jsonObj  = JSON.stringify({dataFeedback:dataFeedback});
$.ajax({
    url: "index.php",
    type: 'POST',
    data: { dataFeedback:dataFeedback },
    success: function(data){
        console.log(data);
    }
});

现在,您可以通过$ _POST直接获取价值[&#39; dataFeedback&#39;];

答案 1 :(得分:1)

您正在发送原始JSON作为请求数据,因此您无法在PHP端使用$_POST访问它,因为这仅适用于表单编码的键/值对。

您需要在PHP端访问原始帖子数据:

$data = json_decode($HTTP_RAW_POST_DATA);
echo $data->dataFeedback;

最后,您没有在PHP端输出JSON,因此请删除dataType: 'json',,否则jQuery将尝试将响应解析为JSON并调用错误处理程序。

答案 2 :(得分:1)

jsonObj是一个普通字符串,不再是数组了。

你可能想要什么:

var dataFeedback =  $("#feedback_popup_message_body").val();
    var jsonObj  = JSON.stringify(dataFeedback);
    $.ajax({
        url: "index.php",
        type: 'POST',
        data : {dataFeedback: jsonObj },
        dataType: 'json',
        success: function(data){
            console.log(data);
        }
    });

现在将设置$ _POST [&#39; dataFeedback&#39;]。

如果你想在json_decode之后使用关联数组(注意第二个参数为true):

$myPostData = json_decode($_POST["dataFeedback"], true);