У вас есть две проблемы:
- Ajax-вызовы асинхронны.Когда
alert
выполняется, массив еще не заполнен (вызов Ajax еще не возвращен). - Массив
reviewArray
не находится ни в одной (родительской) области getReviews
(т.е. недоступениз этой функции).
Поместите alert
в обратный вызов:
$(document).ready(function() {
getReviews(function(reviewArray) {
alert(reviewArray[0]);
});
});
function getReviews(callback) {
$.ajax({
/*...*/
success : function (data) {
var reviewArray = [];
$.each( data.reviews, function( i, itemData ) {
reviewArray[i] = itemData.review;
});
callback(reviewArray);
},
/*...*/
});
}
Если вы хотите сделать это с объявлением reviewArray
заранее, вы также должны определитьgetReviews
в обратном вызове ready
:
$(document).ready(function() {
var reviewArray = [];
getReviews(function() {
alert(reviewArray[0]);
});
function getReviews(callback) {
$.ajax({
/*...*/
success : function (data) {
$.each( data.reviews, function( i, itemData ) {
reviewArray[i] = itemData.review;
});
callback();
},
/*...*/
});
}
});
Но в этом случае реальный поток вашего приложения может быть более запутанным.