Хорошо, так что название, вероятно, не очень хорошо объясняет мой вопрос. Надеюсь, это имеет смысл. Это также мое первое приложение с jQuery, так что простите, если я делаю что-то глупое.
У меня есть следующая функция:
function getRandomImages(limit) {
imagesArray = new Array();
$.getJSON('createImageArray.php', {limit: limit}, function(data) {
$.each(data, function(i) {
imagesArray[i] = data[i]; //imagesArray is declared globally.
});
});
}
getJSON правильно захватывает объект JSON. Возвращает что-то вроде этого:
{"image0":"images/19.10.FBB9.jpg","image1":"images/8.16.94070.jpg","image2":"images/8.14.47683.jpg","image3":"images/8.15.99404.jpg","image4":"images/8.13.20680.jpg","image5":"images/21.12.9A.jpg","image6":"images/8.17.75303.jpg"}
Я отлаживал и уверен, что data [i] правильно содержит путь к изображению, полученный из объекта JSON. Однако после вызова getRandomImages () я просматриваю свой глобальный массив imagesArray и замечаю, что ничего не изменилось. Я предполагаю, что он создает копию imagesArray вместо того, чтобы захватывать фактическую.
Может кто-нибудь сказать мне, что мне нужно сделать, чтобы мой глобальный imagesArray обновлялся в блоке $ .each? Нужно ли передавать imagesArray по ссылке как-нибудь? Извините, я немного растерялся.
Спасибо за помощь.
РЕДАКТИРОВАТЬ : некоторая справочная информация. Я заполняю массив случайных расположений изображений из БД. Я не хочу загружать все изображения из БД в массив одновременно, потому что их слишком много. Итак, у меня есть счетчик, который отслеживает, где я нахожусь в моем массиве изображений. Как только я закончу с изображением, я перемещаю указатель на следующее изображение. Если я доберусь до конца, мне нужно взять больше случайных изображений. Вот где вышеупомянутая функция js вызывается; он вызывает createImageArray.php, который получает x случайных изображений из БД и возвращает массив. Затем я хочу сохранить эти местоположения изображений в моем глобальном массиве images.
Я не уверен, как бы я реструктурировал свой код, чтобы учесть асинхронную природу .getJSON.