簡體   English   中英

從ajax調用中檢索json_encoded PHP對象值?

[英]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()

設置success處理程序,而不是complete

$ .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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM