Ajax:同时加载多个图像

时间:2011-09-21 17:48:12

标签: javascript ajax django user-interface

我有一个图片网格(3x3,并排,在一个布局)。我需要经常更新这个网格。由于每张图片都独立于其他图片(它们从不同的位置被抓取),我选择通过自己的ajax回调加载每张图片,如下所示:

for (var i=0; i < numPictures; i++) {
  Dajaxice.loadPicture(callback_loadPicture, {'picture_id':i})
}

函数callback_loadPicture()将图片放入其中的适当位置。

问题是:通常,即使某些图片比其他图片更快完成加载,浏览器也不会显示任何内容,直到最后一次ajax调用完成。由于某些调用可能会超时,这意味着在单张图片超时之前我没有看到任何内容。

这在每个浏览器中的表现略有不同:有时图片会在回调结束时显示(但通常不会),有时浏览器会显示一些图片,但推迟显示所有图片,直到最后一个完成加载。

我正在使用:

  • django 1.3(python 2.7)
  • windows x64 as(test)server
  • dajaxice for ajax implementation

我愿意改变我的代码结构。

任何意见或建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

由于chrisdpratt所说的ajax调用是阻塞的,如果你真的需要同时显示图像,我会建议某种类型的3x3网格图像预加载,当代码需要时你可以显示它们。

考虑到这一点,您可以运行$(document).ready()上已有的代码,但隐藏图片(即display:none)。稍后需要时,您只需更改需要显示的图像的显示属性。

答案 1 :(得分:1)

如果您遇到的问题确实是由Django开发服务器的单线程实现引起的,您可以尝试django-devserver(https://github.com/dcramer/django-devserver)。除了其他改进之外,它还拥有:

“改进的运行服务器,允许您同时处理请求。”

其他改进也值得!