2017-10-18 70 views
0

我知道有這個多的問題,但沒有一個答案是爲我工作無法在JSON字符串,以便訪問嵌套值從Ajax響應

我經歷了阿賈克斯響應返回從PHP的enocoded JSON字符串

$.ajax({ 
    url : ajax_object.ajax_url, 
    type : 'post', 
    data : { 
     action: 'rt_check_for_new_messages', 
     uid : $uid, 
     pid : $pid, 
     sessionStart : $sessionStart, 
     room_array :$roomArray, 
     messages_array : $messagesArray, 
    }, 
    dataType : "json", 
    success: function(data) { 
     console.log(data); 

在控制檯中我得到

{html: "[]", messageData: "[{"roomName":"master","msgID":1638}, {"roomName":"beta","msgID":1640}]"} 

所以現在我需要訪問「ROOMNAME」這樣我就可以篩選出匹配

var matches = $(data).filter(function(i,n) { 
    return n.messageData[].roomName === 'master'; 
}); 
console.log(matches); 

我想盡組合,我能找到

回答

1

n.messageData[].roomName === 'master';是無效的JavaScript語法。

我相信這是你需要做什麼:

var matches = $(JSON.parse(data.messageData)).filter(function(i,n) { 
    return n.roomName === 'master'; 
}); 

請注意,我在這裏解析data.messageData - 根據您向我們展示了CONSLE輸出,它看起來像messageData是包含JSON字符串,而不是一個數組。