Я заполняю раскрывающийся список данными JSON из getJSON.
Заполнение работает нормально, но я пытаюсь установить, что оно завершено, сравнивая с data.length
, не работает, так как data.length
равно undefined
и я не понимаю почему!
Данные выглядят так:
{
"1": {
"id": "1",
"name": "Plymouth"
},
"2": {
"id": "2",
"name": "Torquay"
}
}
Мой код выглядит так:
$('.locationList').empty();
$('.locationList').append('<option value="">Select...</option>');
$.getJSON('/Settings/locations.txt', function (data) {
var dataNum = data.length;
var counter = 1;
$.each(data, function (i, item) {
$('.locationList').append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
if (counter >= dataNum) {
$('#bookTo').val(locationID + 1);
$('#transferFrom').val(locationID);
};
counter++;
});
});
Этот раздел:
if (counter >= dataNum) {
$('#bookTo').val(locationID + 1);
$('#transferFrom').val(locationID);
};
counter++;
Предназначен для того, чтобы позволить мне предварительно установить значения раскрывающихся списков после завершения цикла $.each
(это работает с другими списками), но этого не происходит.
Когда я запускаю alert(data.length)
Я получаю undefined
, что не имеет смысла, так как data
явно имеет length
для того, чтобы правильно заполнить выпадающий список через $.each
, что он и делает!
РЕДАКТИРОВАТЬ: извините, должен добавить, переменная locationID
объявлена ранее в скрипте из Cookie и является действительной