无法从ajax响应

时间:2017-10-18 08:15:44

标签: json ajax filter nested

我理解有关于此的多个问题,但没有一个答案对我有用

我通过.ajax响应从PHP返回一个编码的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 个答案:

答案 0 :(得分: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的字符串,而不是数组。