2014-02-05 158 views
0

我試圖訪問我從服務器返回的JSON對象中的元素。在JSON的結構如下:正確訪問JSON對象

ajaxResponse: 
      { 
      "user":{ 
       "0":"Matt", 
       "name":"Matt", 
       "1":"/images\/peopleImages\/test.jpg", 
       "image":"/images\/peopleImages\/test.jpg" 
       }, 

      "comment":{ 
       "userCommentID":21, 
       "userComment":"vc ", 
       "userID":1 
       }, 

     "error":false 

     } 

我已經試過幾乎所有我能想到的:

   ajaxResponse[0].user.name 
       ajaxResponse.user.name 
       ajaxResponse.user['name'] 

但工作我總是得到錯誤類型是不確定的空話。 任何幫助,將不勝感激!

編輯

這是我應得的JSON

  $.post("script.php" , 
       { 
        task: 'commentInsert', 
        userId: commentUserId, 
        postId: '2', 
        userComment: comment      
       }         
      ).success(
       function(ajaxResponse){  
        console.log("response: " + ajaxResponse); 
        console.log(ajaxResponse[0].user.name); 
        /* 
        ajaxResponse[0].user.name 
        ajaxResponse[0].user.image 

        ajaxResponse[0].comment.userCommentID 
        ajaxResponse[0].comment.userComment 
        ajaxResponse[0].comment.userId 
        insertComment($.parseJSON(ajaxResponse));     
          */  
       } 
      ).error(
       function(){    
        console.log("error");    
       } 
      ); 
+1

缺少' 「''處1」'....然後'ajaxResponse:'????? –

+0

您是否獲得了'ajaxResponse.user'的有效對象? –

+0

首先在這裏檢查你的JSON:http://jsonlint.com/ –

回答

0

好吧,我忘了打電話給parseJSON

 var data = $.parseJSON(ajaxResponse); 

     console.log("response2: " + data.user.name); 

這似乎糾正,並允許我獲得命名回正確。

0

返回時從您的服務器上的內容:

echo json_encode($ajaxResponse); 

在發送POST:

dataType: "json" 

在此基礎上,你可能會得到它:

ajaxResponse.user 

試圖安慰它。

0

對於直接使用Json對象,您需要通知dataType =「json」,然後您可以使用jQuery中的$ .ajax發送post值和正確的數據類型。

查看文檔在這裏:http://api.jquery.com/jquery.post/

$.ajax({ 
    type: "POST", 
    url: "script.php", 
    data: { 
      task: 'commentInsert', 
      userId: commentUserId, 
      postId: '2', 
      userComment: comment 
    } 
    success: function(ajaxResponse){  
       console.log("response: " + ajaxResponse); 
       console.log(ajaxResponse[0].user.name);  
      } , 
    dataType: "json" 
});