Вы сталкиваетесь с асинхронной природой AJAX. Переместите ваше оповещение в функцию обратного вызова, и оно будет работать как положено:
var rowData = [];
rowData.push("THIS ADDS TO THE ARRAY");
loadPhones(function(data) {
rowData.push(data);
alert(rowData);
});
Причина, по которой вы должны передать функцию на loadPhones
, заключается в том, что вы не хотите, чтобы браузер блокировался во время получения списка телефонов. Как вы и написали, функция анонимного обратного вызова не была выполнена к тому времени, как вы получили оператор alert
.
Делайте все, что вам нужно, с извлеченными данными внутри обратного вызова loadPhones.