先週、客先からAjaxで動的に表示しているメニューが表示されなくなったという連絡がありました。
こちらでは正常に表示されているし、客先でも一部のみのPCしか表示されないという連絡があり調べてみるとIEのキャッシュが原因でした。
原因
どうやらIEでAjaxを利用する場合、キャッシュをOFFにしとかないと通信処理を行わずローカル内のデータを表示しようとするみたいです。
なので対策としてはAjaxのキャッシュをOFFにする設定を入れてあげればいいだけです。
対策
[javascript]
$.ajax({
type: "POST",
url: "some.php",
cache: false,
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
[/javascript]
と【cache: false】をつけるだけでキャッシュが残らなくなり、正しくメニュー表示するようになりました。
一部PCのみだけ発生するっていうのは厄介ですよね。
現象発生するのにも修正後確認するのにも判断しにくいので、対象ブラウザがIE入っている場合、Ajaxをfalseにしてみるのもいいかもしれませんね。