2013-07-12 120 views
1

我似乎無法得到以下代碼輸出任何內容到屏幕上。 JavaScript不是我的強項!

這是JavaScript代碼調用輸出房

$.getJSON('roomupdate.php?level=1&div=1&callback=json',function(res){ 
console.log(res.rooms.name[0]); 
}); 

名單在上面,我只是想在控制檯看到第一個房間的名稱的本地文件。這是JSON輸出(我可以確認腳本可以看到並加載)

json(
{ 
     "rooms": 
     [ 
      { "name" : "Bedroom" }, 
      { "name" : "Living Room" }, 
      { "name" : "Lounge" }, 
      { "name" : "Kitchen" } 
     ] 
}) 

任何人都可以建議我做錯了什麼?甚至要在控制檯中查看?

最後,你可以循環訪問數組嗎?

+2

你可能想訪問你的對象,比如'房[0] .name'。 – Amberlamps

回答

2

你的JSON數據包含一個對象rooms這個對象實際上包含數組[],所以要訪問陣列中的數據,你需要把指數rooms

console.log(res.rooms[0].name); 
+0

謝謝。我知道這應該工作,但事實並非如此。我認爲它是我的JSON格式。它不能是別的! – Colin

1

使用callback=?而不是callback=json,以便jQuery知道您正在使用JSONp並可以爲回調函數選擇自己的名稱。

$.getJSON('roomupdate.php?level=1&div=1&callback=?',function(res){ 
    //alert('Your name is '+res.rooms); 

    console.log(res.rooms.name[0]); 
}); 

查看http://api.jquery.com/jQuery.getJSON/#jsonp瞭解詳情。

編輯:

再次尋找,你需要改變你周圍訪問數據的方式。 res.rooms.name[0]應該是res.rooms[0].name,因爲房間是一個列表,每個房間都有一個名稱屬性。

+0

感謝您提供有關回撥的信息。我沒有意識到它應該是? – Colin

+0

@Colin這是否工作? – rjmunro

0

通過房間的陣列這將循環並記錄每個人的名字:

$.each(res.rooms, function(i, room) { 
    console.log(room.name); 
}); 

如果不工作,然後在回調的開始添加此語句(你有console.log()現在撥打電話):

debugger; 

在開發工具打開的情況下加載/運行您的頁面,它將停止在您擁有該語句的調試器中。現在,您可以詳細瞭解一下所有變量,嘗試表情,看看他們做你的代碼,單步等