2013-03-13 99 views
2

我正在開發一個struts2 web應用程序。當按鈕點擊發生時,我會對一個struts動作進行$ getJSON調用,並對java類執行一些操作。會話被瀏覽器記住

$.getJSON('uponClickingBtn',function(data){ 
     if(data.status=="TRUE"){ 
      $('#test').attr('src','image/greenzx.png'); 
     } 
     else{ 
      $('#test').attr('src','image/redzx.png'); 
     }  
    }); 

的Java類將返回一個字符串,無論是 「TRUE 」/「 FALSE」。如果返回的值爲true,則會顯示greenzx.png圖像,否則會出現圖像。

這個過程第一次正常工作。但是當再次點擊相同的按鈕時,調用Java操作類不會發生,並且瀏覽器只返回最新的圖像。

說,如果它是greenz.png,它會立即再次爲greenz.png

我的瀏覽器的行爲就好像它記住會話期間的值是不希望的。這是否與瀏覽器設置有關,或者我將不得不更改我的代碼?

PS:我有要求使用IE7/IE8作爲瀏覽器。它適用於FirefoxIE是我遇到這個問題的地方。

+0

其他瀏覽器Chrome和Firefox怎麼樣?在這些和ie9 +中工作得很好? – Jai 2013-03-13 10:39:58

+0

@Jai正如我已經提到的那樣,可以很好地與firefox一起工作。 – Prasanna 2013-03-13 10:49:31

回答

6

原因是瀏覽器緩存了您的操作的響應。

  • 選項1 - 在您的JAVA操作中,您必須將HTTP緩存設置爲no-cache
  • 選項2 - 當您使用$getJSON時,爲網址添加一個隨機參數,如'&time=' + Math.random()(該值必須每次都是唯一的)。

第二個選項可以通過使用$.ajaxcache:false選項自動實現。

3

它看起來像瀏覽器返回緩存的數據,而不是加載新的數據。爲避免這種情況,您可以在數據url的末尾添加一些參數 I.e:add'?time ='+ new Date()。getTime()。