2017-10-18 17 views
0

Je crois comprendre qu'il ya plusieurs questions sur cela, mais aucune des réponses travaillent pour moiImpossible d'accéder à la valeur imbriquée dans la chaîne JSON de réponse ajax

Je retourne une chaîne JSON enocoded de PHP grâce à une réponse .ajax

$.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); 

Dans la console je reçois

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

alors maintenant, je dois accéder à "roomname" pour que je puisse filtrer les matches

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

J'ai essayé toutes les combinaisons que je pouvais trouver

Répondre

1

n.messageData[].roomName === 'master'; n'est pas valide la syntaxe JavaScript.

Je crois que c'est ce que vous devez faire:

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

Notez que je suis analyse data.messageData ici - basé sur la sortie de CONSLE vous nous avez montré, il ressemble à messageData est une chaîne contenant JSON, et pas un tableau.