最近在做的一个web网页里面需要展示图片。图片的展示是通过一段javascript代码形成的图片轮播的效果。
但是图片的src是我通过ajax在action中调用数据库再返回得到的HTML代码段,在ajax中将该代码段替换到展示图片的div里面,确发现只能平铺出图片,并不能被形成图片轮播效果的js代码所处理。
原因是ajax的请求是异步的,也就是说,在ajax执行完毕之前,也就是展示图片的div里面的代码尚未被替换前,形成轮播效果的javascript代码已经执行完毕。因此当ajax执行完后,显示出来的图片并不会有轮播效果。
解决方法是,在ajax代码段中添加:async: false 该属性值默认为true,即异步方式。 改成false则为同步方式。只有当ajax执行完毕后,才会执行其后的javascript代码段。
代码如下:
$.ajax({
async: false,
type: "POST",
url:"PictureShowAction.action",
dataType:"html",
data:{productName:ProductName,start:1,end:10},
success:function(strValue){
$("#wrapper #pictureShowSlider div.scroll div.scrollContainer").html(strValue);
}