在成功的Ajax请求上更改背景图像会导致同一图像的多个GET

时间:2009-10-16 10:38:17

标签: jquery ajax get

标题几乎说明了。我有一个没有背景图像的元素。我在Ajax请求期间使用jQuery的css()方法设置一个(微调器),然后用removeAttr(“style”)清除它以恢复。一次只运行一个请求。

然而,这会导致背景图像的GET不仅仅是第一次,但后来也是如此,但即便如此,也并非总是如此。我可以发送,比方说5个请求,并且在第一个之后没有GET用于spinner.gif,然后是另一个请求,然后会有一个请求,然后不再用于另外3个请求,然后GET用于接下来的2个。

如果对每个Ajax请求的图像都有GET,我会理解,但它是随机的。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:1)

如果没有看到您的代码,

无法确定,但您可能会考虑稍微改变一下: 选项a:有两个不同的css类,一个带有微调器,一个没有,而不是使用背景样式参数,只需切换类。 选项b:让旋转器始终存在,但是在ajax调用期间创建容器.hide(),然后创建.show(),在结束时调用.hide()。

答案 1 :(得分:1)

首先,确保您的服务器没有停止浏览器缓存图像。

其次,正如Ken所说,通常更好地打开和关闭一个类,然后在jQuery中使用addClassremoveClass函数。使用removeAttr('style')对我来说似乎有些苛刻,并且可以删除您不想删除的其他样式。

如果上述方法无法解决您的问题,您可以随时尝试预加载图片:

var spinner = new Image;
spinner.src = "/path/to/image.gif";
// when you need to set the image...
$('#image').css('background-image', spinner.src);
// when you need to remove the image...
$('#image').css('background-image', '');