2013-01-04 106 views
7

不工作我實現了一個電子郵件驗證碼。當點擊linkEmail按鈕電子郵件模式將打開。 那裏我必須設置一個處理程序(CaptchaGenerator.ashx)生成的驗證碼圖像點擊linkEmail按鈕單擊。這是代碼。動態更改圖片src使用jQuery在IE和Firefox

$(".linkEmail").click(function() { 
    //Load captcha image 
    $('.imgCaptcha').attr('src', '/Custom/AppCode/Utilities/CaptchaGenerator.ashx'); 
    $('#emailModal').modal(); 
}); 

上面的代碼工作正常,在克羅姆但不是在IE和Firefox的工作。 雖然我試過以下,但沒有運氣。

HTML:

<p id="captchacontainerp" class="captchacontainer"></p> 
------------------------------------------------------------- 
$('#captchacontainerp').prepend($("<img id='imCaptcha' class='imgCaptcha' src='/Custom/AppCode/Utilities/CaptchaGenerator.ashx'></img>")); 
------------------------------------------------------------- 
var img = $('<img id="imCaptcha" class="imgCaptcha">'); 
img.attr('src', '/Custom/AppCode/Utilities/CaptchaGenerator.ashx'); 
$('#captchacontainerp').empty(); 
img.appendTo('#captchacontainerp'); 
--------------------------------------------------------------- 
$('#captchacontainerp').empty(); 
$('#captchacontainerp').append($("<img id='imCaptcha' class='imgCaptcha' src='/Custom/AppCode/Utilities/CaptchaGenerator.ashx'></img>")); 
+0

http://jsfiddle.net/ghwYF/爲我工作得很好(打完跑後,或者你得到404的那個圖像) – llamerr

+0

嘗試ajax調用,因爲我在我的答案中解決了你的問題.. –

回答

8

IE緩存所有的GET請求,所以時間戳添加到您請求的URL如:

$(".linkEmail").click(function() { 
    //Load captcha image 
    $('.imgCaptcha').attr('src', '/Custom/AppCode/Utilities/CaptchaGenerator.ashx?'+new Date().getTime()); 
    $('#emailModal').modal(); 
}); 
+0

是的!問題是緩存,如你所說,謝謝 –

+0

非常感謝。我嘗試了一切,如 'Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetExpires(DateTime.Now); Response.Cache.SetNoServerCaching(); Response.Cache.SetNoStore();'不適合我。但是,做魔術 – Satheesh

+0

這個代碼這個簡單的代碼工作完美... :) – yadavr

1

您是否嘗試過再更改它之前設置src屬性 '' ? 此外,什麼是您所使用的緩存設置(包括本地和服務器上)

+1

改變'src'屬性爲「」將導致當前頁面的請求,不這樣做 – JamesHalsall

0

如果指定任何內嵌樣式屬性,高度或寬度一樣,

<img src="themes/images/01.png" height="100" width="100" /> 
<img src="themes/images/01.png" style="height:100px; width=100px;" /> 

那麼首先除去它然後再試一次。

即使你使用的樣式標籤外部指定樣式,

#imageId{ 
    height : 100px; 
    width : 100px; 
    } 

然後還首次將其刪除,並嘗試。 從圖像中刪除樣式屬性後,它將顯示圖像。

高度屬性是可以與IE工作,但寬度屬性不工作。

如果以上方法無效,那麼: 有時PNG文件不顯示爲好。所以儘量使用他們的JPG圖片。

0

我試圖調用重新驗證碼按鈕時有同樣的問題。 經過一番搜索,現在的功能,幾乎所有著名的瀏覽器(Chrome瀏覽器,火狐,IE,邊緣,...)工作正常:

function recaptcha(theUrl) { 
    $.get(theUrl, function(data, status){}); 
    document.getElementById("captcha-img").src = ""; 
    setTimeout(function(){ 
    document.getElementById("captcha-img").src = "captcha?"+new Date().getTime(); 
    }, 0); 
} 

「theUrl」是用來提供新的驗證碼圖片,可以忽略在你的情況。最重要的一點是生成強制FF和IE重新渲染圖像的新URL。