2

私はstruts2Webアプリケーションを開発しています。ボタンのクリックが発生すると、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画像が表示されるか、そうでない場合はredzx.png画像が表示されます。

このプロセスは、初めて正常に機能します。ただし、同じボタンをもう一度クリックすると、Javaアクションクラスの呼び出しは発生せず、ブラウザは最新の画像を返すだけです。

たとえば、もしそうならgreenz.png、それはまたgreenz.png即座になります。

私のブラウザは、セッション中の値を記憶しているように動作しますが、これは望ましくありません。これはブラウザの設定と関係がありますか、それともコードを変更する必要がありますか?

PS:ブラウザとしてIE7/を使用する必要があります。IE8でうまく機能しFirefoxます。IE私がこの問題を経験しているのはです。

4

2 に答える 2

6

その理由は、ブラウザがアクションからの応答をキャッシュするためです。

  • オプション1-JAVAアクションでは、HTTPキャッシングをに設定する必要がありますno-cache
  • オプション2-使用する場合は$getJSON、URLにランダムな引数を追加します'&time=' + Math.random()(値は毎回一意である必要があります)。

$.ajax2番目のオプションは、オプションとともに使用することで自動的に実現できcache:falseます。

于 2013-03-13T10:38:39.193 に答える
3

ブラウザが新しいデータをロードする代わりに、キャッシュされたデータを返したようです。これを回避するには、データURLにいくつかのパラメータを追加します。つまり、データURLの最後に'?time ='+ new Date()。getTime()を追加します。

于 2013-03-13T10:48:48.510 に答える