我正在尝试使用json_encode
访问从我的PHP脚本返回的对象的属性,如下所示:
的PHP
echo json_encode(array(
'person_id' => $personID,
'job_id' => $jobID)
);
JS
$.ajax({
url: url,
cache: false,
type: "POST"
}).done(function(sData){
console.log(sData);
console.log(sData.job_id);
console.log(sData.person_id);
});
输出:
{"person_id":1,"job_id":1}
undefined
undefined
这里发生了什么?为什么我不能访问这些属性?
更新:
对于任何未来的访问者来说,这是我之前犯过很多次错误的原因(忽略了
dataType
),并且肯定会再次犯错。由于您在Chrome Dev Tools中检查服务器响应时,它会自动解析为JSON对象(在PREVIEW选项卡中),因此尤其令人困惑。
Chrome可以很好地做到这一点,以便您可以轻松检查响应数据,但是对于JavaScript代码却并非如此,您将需要声明正确的响应
dataType
,以便您的代码可以将数据解释为一个对象而不是一个字符串。 最佳答案
$.ajax
默认情况下不将响应评估为JSON。您必须通过dataType: 'json'
这应该做
$.ajax({
url: url,
cache: false,
type: "POST",
dataType: 'json'
}).done(function(sData){
console.log(sData);
console.log(sData.job_id);
console.log(sData.person_id);
});