Метод getJSON
является асинхронным - когда механизм времени выполнения достигает последнего предупреждения, он еще не завершил выполнение.
Вы не можете использовать массив до завершения обратного вызова.
Просто сделайте все, что вам нужно сделать из-за обратного вызова, например:
$.each(dataList, function(recordno, machine) {
machineId.push(machine['id']);
alert(machine['id']);
});
alert(machineId.join(", "));
Это покажет все идентификаторы, разделенные запятой.