【发布时间】:2013-10-20 08:30:58
【问题描述】:
事情: 我有一个页面,它必须显示不确定数量的图像,通过 AJAX(在服务器端使用 base64 编码)加载。
var position = 'front';
while(GLOB_PROCEED_FETCH)
{
getImageRequest(position);
}
function getImageRequest(position)
{
GLOB_IMG_CURR++;
$.ajax({
url: urlAJAX + 'scan=' + position,
method: 'GET',
async: false,
success: function(data) {
if ((data.status == 'empty') || (GLOB_IMG_CURR > GLOB_IMG_MAX))
{
GLOB_PROCEED_FETCH = false;
return true;
}
else if (data.status == 'success')
{
renderImageData(data);
}
}
});
}
问题是图像(由 renderImageData() 函数构造)仅在获取所有图像时才(全部)附加到特定 DIV。我的意思是,在循环结束之前不可能进行任何 DOM 操作。
由于可能有大量图像,我需要一张一张加载和显示图像,所以我无法将它们堆叠起来,直到它们都被提取出来。
【问题讨论】:
-
您正在 while 循环中启动一个请求,如果
data.status == 'success'并且当您设置GLOB_PROCEED_FETCH = false这是 while 循环的条件时没有请求,则此请求会启动另一个请求。那么 while 循环到底是什么原因呢? -
修复了初始代码
标签: javascript jquery ajax dom append