2011-07-01 45 views
0

我是JSON的新手,真的很苦惱。我讀過無數其他帖子和網頁,但似乎無法弄清楚。用JQuery解析嵌套的JSON

我使用PHP來輸出JSON(從數據庫中的數據),此代碼:

header('Content-type: application/json'); 
    echo json_encode($data); 

這裏是JSON:

{ 
    "x0": { 
     "id": "1", 
     "name": "Rob", 
     "online": "1", 
     "gender": "m", 
     "age": "29", 
     "height": "5'8''", 
     "build": "Average", 
     "ethnicity": "White", 
     "description": "Art geek person", 
     "looking_for": "Anything", 
     "image": "4fs5d43f5s4d3f544sdf.jpg", 
     "last_active": "29-06-11-1810", 
     "town": "Manchester", 
     "country": "UK", 
     "distance": 0.050973560712308 
    }, 
    "x1": { 
     "id": "2", 
     "name": "Dave", 
     "online": "1", 
     "gender": "m", 
     "age": "29", 
     "height": "5'8''", 
     "build": "Average", 
     "ethnicity": "White", 
     "description": "Art geek person", 
     "looking_for": "Anything", 
     "image": "4fs5d43f5s4d3f544sdf.jpg", 
     "last_active": "29-06-11-1810", 
     "town": "Manchester", 
     "country": "UK", 
     "distance": 0.050973560712308 
    } 
} 

我覺得我有問題是JSON嵌套(可能是錯誤的)?

這是JQuery的:

function fetchProfiles() { 
    var url='http://url.com/here'; 
    var i = 0; 
    var handle = 'x'.i; 

    $.getJSON(url,function(json){ 
     $.each(json.results,function(i,profile){ 
      $("#profiles").append('<p><img src="'+profile.handle.image+'" widt="48" height="48" />'+profile.handle.name+'</p>'); 
      i++; 
     }); 
    }); 
} 

任何意見或建議表示讚賞!

謝謝!

+1

貴JSON完全一樣呢?我期望一個數組......它真的有一個名爲「結果」的根鍵嗎? – polarblau

+0

JSON文件的頂級可以是對象或數組。 – Quentin

+0

是的,這是PHP的JSON輸出。關於.results的好處 - 在那裏複製和粘貼錯誤。 –

回答

3

我認爲問題在於你在json.results上調用$ .each(如果json正是你展現給我們的)。

你sholud做:

$.each(json,function(i,profile){ 
     $("#profiles").append('<p><img src="'+profile.image+'" widt="48" height="48" />'+profile.name+'</p>'); 
    }); 

看看這裏的小提琴:http://jsfiddle.net/ENcVd/1/(它alerst你的圖像屬性JSON對象)

+0

感謝您的回答 - 該示例完美無缺。我認爲我的問題可能與我從中拉取JSON的URL有關。它顯示在瀏覽器中,但使用jsfiddle代碼,它只是提醒未定義? –

+0

另外在Firebug控制檯中GET url是紅色的,但是有200 OK服務器響應? –

+0

也許問題在於你提出請求的服務器不在發出請求的頁面的同一個域中。是這樣嗎? 無論如何,如果你有一個完整的小提琴,我會盡力幫助! –