Ajax-вызовы асинхронны .alert(nodeArray[0]);
выполняется перед функцией, назначенной вами ajaxRequest.onreadystatechange
.
Поместите alert
в обратный вызов, и он будет работать (при условии, что вы получите правильный ответ). Каждый код, который должен работать с результатом, должен вызываться из обратного вызова.
Обновление: Вы не можете вернуть данные.Вы должны реструктурировать свой код для использования обратных вызовов.
Если ваш текущий код похож на
oNodeArray = grabNodes(env, poolName);
// work on `oNodearray`
, вы должны изменить его на:
grabNodes(env, poolName, function(oNodearray) {
// work on `oNodearray`
});
и Ajaxcallback должен вызывать функцию, которую вы передаете, и передавать ей массив:
function grabNodes(env, poolName, callback){
//....
ajaxRequest.onreadystatechange = function(){
// stuff
callback(nodeArray);
}
}
Поскольку вызовы Ajax являются асинхронными, они не блокируют выполнение кода.Вам нужно передать функцию, которая будет выполнена после получения данных.
Дополнительные комментарии: