我正在进行ajax调用以获取数据库中的所有图像。 对于返回的每个图像id,我调用ajax函数来获取图像的缩略图。
我有两个数组 img_arr,src_arr 。 img_arr 存储第一个ajax调用返回的数据, src_arr 存储第二个ajax调用的数据。
var img_arr=[],src_arr=[];
function get_all_images(){
$.ajax({
type: 'GET',
url: 'get_all_images/',
success: function(data){
parsedData = jQuery.parseJSON(data);
if(parsedData.length!=0){
for(var i =0;i<parsedData.length;++i){
img_arr.push(parsedData[i]);
// console.log(img_arr.length);
$.ajax({
type: 'GET',
url: 'get_thumb/'+parsedData[i],
success: function(data){
src_arr.push(data);
//console.log(src_arr.length);
}
});
}
}
}
});
console.log(img_arr.length);
console.log(src_arr.length);
}
但是最后我的两个数组长度都为0。但是当我在ajax的成功回调中打印长度时,我获得了适当长度的数组。有成功回调后存储和使用数据的方法吗?
答案 0 :(得分:0)
这将是很多服务器端调用,
只是一个想法:为什么不在服务器上获取所有带有关联缩略图的图像,然后只需进行一次ajax调用即可获得图像+拇指?
答案 1 :(得分:0)
当您使用console.log搜索代码的最后一行时,尚未返回任何ajax调用。这就是阵列全长为零的原因。您的成功函数是回调,这意味着代码不会运行,直到ajax调用发送到服务器,然后服务器已将其响应发送回浏览器。与此同时,您的代码不会等待,它会继续。所以它发出了一堆请求,但几乎可以肯定它会在任何一个请求返回之前点击console.log行(除非有数百或数千个请求)。
无论如何,我同意上一张海报,你应该尝试捆绑这些,而不是提出一堆小请求。当你开始加载它时,你的服务器会感谢你。