Как я могу получить данные от $ .getjson - PullRequest
0 голосов
/ 12 сентября 2011

Я кодирую jquery, как это

var machineId = [];
$.getJSON('ajax/getmachines.php', { plant: vPlant, floor: vBuilding + vFloor }, function(dataList) {
    $.each(dataList, function(recordno, machine) {
        machineId.push(machine['id']);
        alert(machine['id']);
    });
}); 

alert(machineId[0]);

Первое предупреждение в $.each показывает правильные данные для каждой записи, но почему последнее предупреждение показало, что я не определен? Как я могу использовать массив machineId? Спасибо.

Ответы [ 2 ]

2 голосов
/ 12 сентября 2011

Запрос является асинхронным, поэтому последнее предупреждение выполняется перед заполнением массива. Попробуйте разместить «alert (machineId [0])» после операции $ .each.

0 голосов
/ 12 сентября 2011

Метод getJSON является асинхронным - когда механизм времени выполнения достигает последнего предупреждения, он еще не завершил выполнение.

Вы не можете использовать массив до завершения обратного вызова.

Просто сделайте все, что вам нужно сделать из-за обратного вызова, например:

$.each(dataList, function(recordno, machine) {
    machineId.push(machine['id']);
    alert(machine['id']);
});
alert(machineId.join(", "));

Это покажет все идентификаторы, разделенные запятой.

...