2013-05-31 53 views
1

不工作我有由URL检索SRC,等的图像标签:jQuery的追加与src网址img元素在IE和FF

<img src="http://localhost:2000/User/GetImage/1" />

由jQuery的生成元素,即:

this.updateImage = function() 
{ 
    console.log("Change me!"); 
    var context = this; 
    var imageSrc = webApiUrl + "User/GetImage/" + this._id; 

    $("#ga-application-header .user-info-image").each(function() 
    { 
     $(this).empty(); 
     /* First try */$(this).append($("<img title='" + context._firstName + " " + context._lastName + "' />").attr("src", imageSrc)); 
     /* Second try*/$(this).append("<img title='" + context._firstName + " " + context._lastName + "' src='" + imageSrc + "' />"); 
    }); 
} 

这条线与coments - 第一次和第二次尝试 - 是我试过得到这个成就的方式。

现在最重要的细节。加载页面时,调用此函数并显示图像。这工作。但如果我再次调用它(当用户更改它的图片时),图像不会在IE和FF中显示。只在Chrome上。 IE和FF甚至不打开图像请求(在控制台的网络选项卡上)。请注意0​​文字“改变我!”总是被称为。

+2

一点也没有不显示任何错误或任何东西?地方? – PitaJ

+0

@PitaJ没有错误。 – DontVoteMeDown

+0

检查两个调用中的上下文是否相同。 –

回答

3

该问题是由浏览器缓存图像引起的。解决方法是将随机查询字符串附加到图像源。

+0

搞清楚这一点很好。我永远不会猜到! – PitaJ

+0

这经历了我的想法,但我没有理想的如何避免缓存。 – DontVoteMeDown

3

首先,我倾向于使用以下模式,而不是字符串连接。

var img = $('<img/>').attr('title',context._firstName).attr('src',imageSrc); 
$(this).append(img); 

其次,你的this.updateImage里面,你能CONSOLE.LOG /目录(本),我猜你的环境是不正确的,你可能想要做一个变种是=此,保持你的参考在检查。

+1

有''imageSrc''上没有关闭的报价请修复它! –

+0

我也试过了..最后,这是一个缓存问题。 – DontVoteMeDown

1

我刚碰到与IE相同的问题。

帮我:

而不是

$form.find(".classname").append(content); 

这个工作在IE和其他浏览器:

$form.find(".classname").html($form.find(".classname").html() + content); 

希望它可以帮助别人在这里......