2011-05-21 54 views
1

我試圖編寫一個通知系統。一個AJAX調用運行一個PHP腳本,它選擇'new = 1'的每個'消息'。所以我通過JSON_encode將PHP數組返回給JS。如何讀出JSON返回的對象?

這將返回後續的對象: JS object

在我原來的頁面,你可以看到所有的會話「。我想用新消息的數量(= Object中記錄的數量)'更新'div(具有新消息)的文本。

現在問題來了:我不知道如何讀出那個對象。有人可以幫我嗎?

非常感謝!

回答

0

如果你想要消息在特定會話數量,這將是這樣的:

theObjectThatGotReturned[sessionName].length 
// sessionName is the name of the session; in this case, "cgk" or "ur" 

如果您希望郵件的所有會話的數字,它會是這樣的此:

var newMessages = 0; 
for(var i in theObjectThatGotReturned) { 
    if (/* here, you should test if i == a valid session name */) { 
     newMessages += theObjectThatGotReturned[i].length; 
    } 
} 
// newMessages is the number of new messages. 
+0

我想要一個特定會話的消息數量,但也爲每個會話。所以在這個例子中它將是:returnedObj [cgk] .length和returnedObj [ur] .length。問題是我不知道會話的「名稱」(在這種情況下爲UR&CGK),所以我必須循環它。 – Dnns 2011-05-21 23:19:59

+0

我不完全確定你的意思......如果你不知道名字,你怎麼知道你什麼時候找到合適的會議? – DavidJCobb 2011-05-21 23:40:32

+0

...現在,如果你的意思是你不會提前知道這個名字,但是你會在運行時將它存儲在一個變量*中,那麼...你會使用我的第一個代碼片段。當您執行'object [sessionName]'時,瀏覽器將取得'sessionName'的值並將其用作屬性的名稱。因此,例如,如果'sessionName ==「ur」',那麼'object [sessionName] == object [「ur」] == object.ur'。 – DavidJCobb 2011-05-21 23:42:19

0

嘗試:JSON =新功能( 「返回({」 + ajax.responseText + 「})」);

+0

我很確定OP已經將它從字符串轉換爲對象。如果我沒有弄錯,他們問題中的圖像實際上是Safari/Chrome調試器的屏幕截圖,顯示對象的屬性。 – DavidJCobb 2011-05-21 23:37:04