好的,所以这个标题可能不能很好地解释我的问题。希望这是有道理的。这也是我第一个使用 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 个随机图像并返回一个数组。然后我想将这些图像位置存储在我的全局 imagesArray 中。
我不确定如何重构我的代码以考虑 .getJSON 的异步特性。