在更新之前,页面等待所有AJAX调用完成

时间:2011-11-30 02:22:51

标签: javascript jquery html ajax user-interface

有时在我的页面上,我同时进行了很多ajax调用。我们的想法是每个元素都会在其数据可用时更新(我不想对调用进行排队)。但是,有时,在完成所有ajax调用之前,网页不会更新任何元素。

例如,我正在更新连续的四张图片 - 每张图片都有自己的ajax回调,一旦数据可用就会更新其源码;代码看起来像这样:

for (var i = 0; i < numPictures; i++ ){
  Dajaxice.Images.load_picture(callback_function, {'pictureId': i});
}

callback_function一旦准备就将图像放入其UI元素中:

imgSnippet = '<img src="' + data.img_source + '"/>'
$("#" + data.container_id).html(imgSnippet);

(数据是此功能从服务器收到的对象)

我正在使用(正如您在示例中看到的)dajax(django的插件)用于AJAX功能。在服务器端,我有一个Apache(2.2)通过mod_wsgi运行django 1.3。

执行时,即使某些ajax调用提前完成(我可以在我的服务器上看到它),该页面也不会更新任何元素,直到最后一次调用回来。

有什么建议吗?

谢谢,

2 个答案:

答案 0 :(得分:1)

我建议制作一个数组来保存所有图像并制作一个新功能,当yoy从服务器获取所有图像时显示图像,并且在回调中,当计数器等于数字时,foreach图像增加q预定义计数器图像显示照片并将计数器归零,你可以将图片加载到图片应该直到的地方。 对不起,我没有写你的代码,但我在手机上,如果我的答案不清楚,我会稍后发给你

答案 1 :(得分:1)

您可以通过使用{0}或0毫秒超时的setTimeout调用回绕函数来解决此问题。这使系统可以更新屏幕。