不明白如何使用jQuery $ .each来迭代这个JSON

时间:2013-09-25 20:19:20

标签: jquery json each

我从服务器获取JSON,我想在网页上设置输入框的值。 JSON对是输入的id和值。测试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 个答案:

答案 0 :(得分:3)

您无需在responseParsed内使用$.each。这就是keyvalue参数的含义。

您的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);
    });
});

答案 1 :(得分:0)

我想你想要这个:

success: function ( response ) {    
    if ( response ) {
        responseParsed = JSON.parse( response );
        $.each( responseParsed[0], function( key, value ){
            $('#' + key).val(value);
        });
    }