如果你确实需要使用Ajax...
我遇到过一些情况,其中onload处理程序不是正确的选择。在我的情况下,是通过javascript打印时。因此,对于这种情况,有两个选项可以使用Ajax风格:
解决方案1
使用Base64图像数据和REST图像服务。如果您有自己的Web服务,可以添加一个JSP/PHP REST脚本,以Base64编码提供图像。现在这有什么用?我发现了一个很酷的新语法用于图像编码:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhE..."/>
你可以使用Ajax加载图像的Base64数据,然后在完成后构建Base64数据字符串以生成图像!非常有趣 :). 我建议使用这个网站http://www.freeformatter.com/base64-encoder.html进行图像编码。
$.ajax({
url : 'BASE64_IMAGE_REST_URL',
processData : false,
}).always(function(b64data){
$("#IMAGE_ID").attr("src", "data:image/png;base64,"+b64data);
});
解决方案2:
欺骗浏览器使用其缓存。这将在资源在浏览器缓存中时为您提供漂亮的fadeIn()效果:
var url = 'IMAGE_URL';
$.ajax({
url : url,
cache: true,
processData : false,
}).always(function(){
$("#IMAGE_ID").attr("src", url).fadeIn();
});
然而,这两种方法都有其缺点:第一种只适用于现代浏览器。第二种存在性能故障,并且依赖于如何使用缓存的假设。
祝好,
will