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

Я получаю 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
        });
    }

2 ответа

Решение

Вам не нужно использовать 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);
    });
});

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

success: function ( response ) {    
    if ( response ) {
        responseParsed = JSON.parse( response );
        $.each( responseParsed[0], function( key, value ){
            $('#' + key).val(value);
        });
    }
Другие вопросы по тегам