$.getJSONキャッシュ


jQueryの$.getJSON関数を使用すると、strutsに出力されたjson形式のデータ、actionパスがgetsyncpathなどのキャッシュ処理が行われているようです.
 function getResult(){
 		$.getJSON( getsyncpath,null,function call(data){
		    var flag_sync = data.result;
		    alert(flag_sync);
		    if(flag_sync == true) {
		     	$("#waitdiv").hide();
				$("#main").show('slow');
		    }else {
		    	setTimeout(function() { getResult() }, interval_getSyncflag);
		    }
    	});
 }

 
   ここではループでもsettimeoutでもsetIntervalでも getResult関数は1回のみ実行され、alert(flag_sync)は毎回ポップアップされますが、getsyncpathのactionは実行されず、actionで出力を追跡するとactionが呼び出されていないことがわかります.データベースの数値が変化してもjQueryはactionを呼び出さないことがわかります.別のページでgetsyncpathのjson出力を直接開き、ここのページをリフレッシュしてからactionが再び呼び出されます.
   解決策:getsyncpath接続の後にタイムスタンプを付け、パラメータ&time=new Date()を追加します.これにより、生成されるたびにリンクが異なり、キャッシュの状況が回避されます.