キャッシュさせないことで回避できました。
Javascript(jquery)でjsonファイルを読み込んでページに表示するプログラムを作成しました。ajaxで非同期に実行させます。
Chrome、Firefoxで正常に動作したので出来上がりと思っていたら、IE11で動かないことが判明しました。最初は表示されたので大丈夫と思ったのですが、その後は実行しても反応しません。
調べてみてわかったことはIEはajax処理の2回目以降をキャッシュを使ってしまうということです。有名な事象のようでネットに対処方法が載っていました。
①$.ajaxのパラメーターでキャッシュを無効にする
以下のように「cache:false」を入れるだけなので簡単です。 しかし私の場合はなぜかうまくいきませんでした。
$.ajax({
type: "POST",
dataType: 'json',
cache : false,
timeout: 10000,
url: 'sample.json'
}).done(function(json){
...
}).fail(function(){
...
});
②スクリプト全体でajaxのキャッシュを無効にする
jqueryには「$.ajaxSetup」でajax通信に関連するデフォルト値を変更することができます。以下のように一度実行すると$.ajaxで指定しなくてもデフォルトでキャッシュが無効になります。私の場合、こちらでうまくいきました。(と一度は思いました)
$(function() {
$.ajaxSetup({
cache: false
});
});
③タイムアウト時間を延ばす
②でうまくいったと思っていたのですが、何度も実行していると時々うまくいかないことがありました。私のPCはなぜかIE11が非常に重く、IE11を開くと冷却ファンが最高速で回転するほどです。ブラウザの動きも緩慢でした。そこで$.ajaxのパラメーター「timeout」の時間を延ばしてみると解消されました。
0 件のコメント:
コメントを投稿