我的代码在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对象而不是字符串。
答案 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");
});