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