Получить значение из строки JSON с помощью jQuery

0

Я пытаюсь проанализировать строку JSON с несколькими массивами и некоторыми парами ключ: значение. Теперь я могу получать значения из одного массива, но я хочу получать значения из другого массива. Массивы имеют одинаковые ключи, но я не могу узнать, как получить данные из второго массива.

Сценарий jQuery выглядит так:

$("a").click(function () {
    var page = $(this).text();
    console.log(page);
    $.post("/services/gallery/getimage", {"path[]":[<%=path %>], "page": page}, function(data){
        var length = data.previews.length;
        console.log(length);
        var html = "";
        for(var i = 0; i < length; i++){
            $.each(data.previews[i], function (index, value) {
                html+= "<a href=\""+value+"\"><img src=\""+value+"\" alt=\""+index+"\" /></a>";
                console.log("index: "+index);
                console.log("value: "+value);
                console.log(data.heights[i].index);
            });
        }

        $("#gallery").html(html);
    });
});

Я также пробовал некоторые изменения этого console.log(data.heights[i].index); но по-прежнему не могут быть использованы.

Консольный выход

1
15

index: index1
value: /some/path
undefined

index: index2
value: /some/paht
undefined 

и строка JSON выглядит так:

{
    "previews": [
        {
            "index1": "/some/path"
        },
        {
            "index2": "/some/path"
        }
    ],
    "heights": [
        {
            "index1": "67"
        },
        {
            "index2": "103"
        }
    ]
}

У меня будет больше массивов с одинаковыми индексами, поэтому будет здорово, если будет возможно проанализировать его в одном для. Спасибо за любую помощь

EDIT: Имена атрибутов динамические, а не статические. Это может быть что угодно, а не только index1, index2,...

Теги:
arrays

1 ответ

1
Лучший ответ

Вы используете .index поиска данных в объекте из массива heights когда вы должны использовать [index]. Итак, эта строка:

console.log(data.heights[i].index);

становится:

console.log(data.heights[i][index]);
  • 0
    Спасибо! Я приму ваш ответ как можно скорее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню