Я получаю 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
});
}
Вам не нужно использовать 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);
});
}
responseParsed
,index
- это ключ в массиве, аdata
- это значение массива. Это значение является объектом. Нам нужно зациклить этот объект, поэтому мы вызываем$.each
дляdata
, как мы это делали дляresponseParsed
.