ajax post返回字符串而不是json对象

时间:2017-03-24 10:12:57

标签: php jquery json ajax parse-platform

我的代码在PHP中返回dataType对象但是当我使用AJAX调用相同的函数时,它将数据类型作为字符串返回给我。我希望数据类型是JSON对象。

PHP代码

$result = $manualRequest->getUser($_POST['phonenumber']);

print_r($result);

这实际上是一个已解析的数据库对象

AJAX代码

function getCustomer() {
        var callerNumber = $('#caller_number').val();
        var data = {
            'phonenumber': callerNumber
        };
        var url = "customerRequest.php";

    $.ajax({
        url: url,
        data: data,
        type: 'POST',
        dataType: 'JSON',
        success: function (result) {
            console.log(result);
        }
    });
}

我得到了想要的结果但是我想要JSON对象而不是字符串。

4 个答案:

答案 0 :(得分:1)

print_r通常不会返回有效 JSON,您想要

$result = $manualRequest->getUser($_POST['phonenumber']);
echo json_encode( $result );

只要它是有效的JSON,dataType设置为json,jQuery就会解析它,其他任何东西都会导致你的ajax请求中出现“解析错误”。

答案 1 :(得分:0)

在php文件中添加:

header('Content-type:application/json;charset=utf-8');
echo json_encode($result);

而不是print_r($result);

答案 2 :(得分:0)

在javascript中,您可以使用JSON.parse方法将字符串JSON解析为JSON对象。

此方法的文档:Provider Installation docs

答案 3 :(得分:0)

如果你想要漂亮的JSON

$result = $manualRequest->getUser($_POST['phonenumber']);
echo json_encode($result , JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT );

修改

    $.ajax({
    url: url,
    type: 'POST',
    dataType: 'json',
    data: data,
    success:function(response){
        console.log(response);
    }
})
.done(function() {
    console.log("success");
})
.fail(function() {
    console.log("error");
})
.always(function() {
    console.log("complete");
});