2013-12-11 115 views
3

我需要强制div div背景图像刷新,而我的ajax请求成功我的div背景图像url不会更改,但图像内容更改,而Ajax success.how我可以刷新背景URL。强制背景图像重新加载

的JavaScript

$.ajax({ 
url: "editor/savemapimage.php", 
type:"POST", 
data:{imagevalue : urlimage}, 
success:function(data){$(".map_canvas").css("background-image","url("+data+")");}, 

上面的代码,如果结果数据串的东西map.png所以这将是相同的,但我的PHP页面更新图像内容等都需要而图像更新,每次更新这个网址。

+0

您可以编辑图片的URL喜欢这里: http://stackoverflow.com/a/2104998/3090180 – apo

回答

8

您可以添加一个唯一的ID,如图像的URL的末尾:

http://yourdomain.jpg?random=1239308234 

如果ID是独一无二的浏览器会认为它是一个新的资源,并将重新加载图像。

var randomId = new Date().getTime()); 
$.ajax({ 
    url: "editor/savemapimage.php", 
    type: "POST", 
    data: { 
    imagevalue: urlimage 
    }, 
    success: function (data) { 
    $(".map_canvas").css("background-image", "url(" + data + "?random=" + randomId + ")"); 
    }, 
0

您应该添加一些随机查询到您的背景图像,并重新设置它

$.ajax({ 
    url: "editor/savemapimage.php", 
    type:"POST", 
    data:{imagevalue : urlimage}, 
    success:function(data){$(".map_canvas").css("background-image","url("+data+"?random="+ new Date().getTime()));}, 
0

对于使用Literally Canvas的人来说,您可能会遇到同样的问题。 Chrome中肯定会出现这种情况。巴斯van Dijk的解决方案效果很好所以只需使用它像这样:

$(document).ready(function() { 

    //background image (add random variable to stop caching) 
    var backgroundImage = new Image() 
    backgroundImage.src = "my-image.png?r=" + new Date().getTime(); 

    var lc = LC.init(
     document.getElementsByClassName('literallycanvasdiv')[0], 
     { 
      backgroundColor: 'whiteSmoke', 
      backgroundShapes: [LC.createShape('Image', {x: 10, y: 10, image: backgroundImage, scale: 1})] 
     } 
    ); 
});