[英]Retrieving json_encoded PHP object values from an ajax call?
我的ajax:
$.ajax(
{
type:'POST',
url: 'ajax.php', //the script to call to get data
data: {request: 'getUser',id:id},
dataType: 'json', //data format
complete: function(data) //on receive of reply
{
console.log(data);
}
});
我的處理ajax請求的php文件(ajax.php):
elseif ($_POST['request'] == 'getUser')
{
$DAO = new UserDAO;
$q = $DAO->ajaxGetUser($_POST['id']);
echo json_encode($q);
}
ajaxGetUser
函數:
public function ajaxGetUser($id)
{
$q = $this->db->prepare('SELECT * FROM user WHERE userId=:id');
$q->bindValue(':id', $id, PDO::PARAM_INT);
$q->execute();
$r = $q->fetch(PDO::FETCH_OBJ);
unset($r->userPassword);
return $r;
}
console.log(data)
向我顯示螢火蟲上“ ResponseJSON”中的對象,但是當我嘗試類似console.log(data.userName)
, console.log(data[0].userName)
,它們是未定義的,由於我對ajax的掌握不是很好,所以我一直在尋找許多線程,但是找不到可以幫助我的線程。
我猜因為dataType
設置為“ json”,所以json已被解析,我如何訪問User對象的所有屬性? 謝謝你的幫助
readyState 4
responseJSON
Object { userId="6", userName="321", more...}
responseText
"{"userId":"6","userName...":null,"userStatus":"0"}"
status 200
statusText "OK"
abort function()
always function()
complete function()
done function()
error function()
fail function()
getAllResponseHeaders function()
getResponseHeader function()
overrideMimeType function()
pipe function()
progress function()
promise function()
setRequestHeader function()
state function()
statusCode function()
success function()
then function()
$ .ajax()提供的回調掛鈎如下:
[...]
4.如果請求成功,則調用成功回調選項。 它接收返回的數據,包含成功代碼的字符串以及jqXHR對象。
[...]
6.完成請求時,無論失敗還是成功,都會觸發complete回調選項。 它接收jqXHR對象,以及包含成功或錯誤代碼的字符串。
代碼如下所示:
success: function(data)
{
console.log(data, data.userId, data.userName);
}
這似乎是數據對象,我設法讓用戶對象是通過使用data.responseJSON
,所以data.responseJSON.userName
的名稱。
我不知道為什么它會以這種方式返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.