не понимаю, как использовать jQuery $ .each для итерации этого JSON

0

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

[{"city":"Rochester, Monroe County","country":"US","streetAddress":"12 Gibbs Street"}]

Реальный JSON будет намного длиннее с более ключевыми парами значений в одном объекте.

Когда я использую этот жестко закодированный оператор, он устанавливает входное значение.

$('#city').val( responseParsed[0].city );  //this sets the city input to a value

Я попытался расширить/автоматизировать это с помощью $.each. Я пытаюсь научиться его использовать. Я просто не могу понять это. На данный момент я чувствую себя плотным, после многих попыток. Здесь код для опции успеха в ajax.

success: function ( response ) {    
    if ( response ) {
        responseParsed = JSON.parse( response );
        $.each( responseParsed, function( key, value ){
            $('#key').val( responseParsed[0].key );
            console.log( $('#key').val( responseParsed[0].key ) + '|eachItem' ); // [object Object]|eachItem only once & input values do not change
        });
    }
Теги:
each

2 ответа

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

Вам не нужно использовать responseParsed внутри вашего $.each. Это то, что означают параметры key и value.

Ваше value (или this) является текущим элементом массива.

$.each(responseParsed, function(key, value){
    $('#city').val(value.city);
});

Чтобы получить каждый ключ от объекта, вам понадобится еще $.each:

$.each(responseParsed, function(index, data){
    $.each(data, function(key, value){
        $('#'+key).val(value);
        console.log(key, value);
    });
});
  • 0
    Ракета Хазмат, спасибо, отлично работает. Не могли бы вы объяснить функцию (индекс, данные) и функцию (данные, функцию (ключ, значение). Я понимаю ключ, значение, но является ли данные одинаковым содержанием в обоих местах, и если да, то что это? Я прочитал остальная часть кода, но я не понимаю ту часть «двойных данных». Спасибо еще раз.
  • 0
    @Mike_Laird: когда вы зацикливаетесь на responseParsed , index - это ключ в массиве, а data - это значение массива. Это значение является объектом. Нам нужно зациклить этот объект, поэтому мы вызываем $.each для data , как мы это делали для responseParsed .
0

Я думаю, вы этого хотите:

success: function ( response ) {    
    if ( response ) {
        responseParsed = JSON.parse( response );
        $.each( responseParsed[0], function( key, value ){
            $('#' + key).val(value);
        });
    }
  • 0
    Извините, это не работает, и это нарушает функцию, в которую вложено все это.
  • 0
    Извините, я сделал только одну петлю, это неправильно. Код Rocket правильный.

Ещё вопросы

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