Как правильно возвращать и отображать данные JSON с помощью getJSON?

file "zip.json": { "zip11111": "City1", "zip99999": "City2" }

JavaScript:

jQuery(document).ready(function() {
$("#textbox1zip").change(function() {
    $.getJSON('zip.json', function(data) {

    /* each of the following code blocks don't work when exchanged for each other:

    1 zipcode = "zip" + $("#textbox1zip").val();
    * $('#textbox2city').val( data.zipcode ); -----> call silently dropped

    2 zipcode = 'zip99999';
    * $('#textbox2city').val( data.zipcode ); -----> call silently dropped

    3 zipcode = "zip" + $("#textbox1zip").val();
    * alert( data.zipcode ); -----> returns 'undefined'
    */

    /* but each of these blocks here works:
    4 $('#textbox2city').val( data.zip99999 ); ------> ok

    5 alert( data.zip99999 ); -----> ok

    6 zipcode = 'zip99999';
    * $('#textbox2city').val( zipcode ); ------> ok

    7 zipcode = "zip" + $("#textbox1zip").val();
    * $('#textbox2city').val( zipcode ); ------> ok
    */
    });
});
});

Я хочу, чтобы значение, взятое из textbox1zip, возвращало соответствующее значение из "zip.json" в textbox2city. И я хочу использовать getJSON. Это, наверное, очень просто, но я не вижу этого...

1 ответ

Решение

Попробуй это:

var zipcode = 'zip99999';   // or 'zip11111'
$('#textbox2city').val( data[zipcode] );

а также

var zipcode = "zip" + $("#textbox1zip").val();
$('#textbox2city').val( data[zipcode] );

Теперь это alert( data.zipcode ); -----> returns 'undefined'

Это происходит, так как объект JSON у вас есть только два ключа zip11111 & zip99999, Так, data.zip11111 или же data.zip99999 работает, тогда как data.zipcode нет, так как нет ключа с именем zipcode,

Другие вопросы по тегам