- Code Igniter バージョン '2.0.3'
- Jクエリ1.7
- Jquery 履歴プラグイン
私は ajax 方式で構築した CodeIgniter アプリを持っています。次のような機能があります。
$(document).on('click','.ajax_link',function(e){
//Stop the normal href action
e.preventDefault();
//Grab the destination URL
var new_url = $(this).attr('href')
//Grab the content via ajax and pass it to the history change function
$.get(base_url+new_url,function(data){
History.pushState({
content:data.content,
url:data.url
}, data.title, data.url);
//Refresh some site variables
refresh();
},'json');
});
ajax_link のクラスでアンカー要素のクリックをキャプチャし、その応答データのページへの配置を処理する関数に応答を送信します。
これは Chrome と FF で機能します。リンクをクリックすると、jQuery が get 要求を行い、JSON オブジェクトを取得し、history.pushState() 関数が json データの一部をページに挿入します。
私が抱えている問題はIE8にあります。基本的に、アプリを最初に開いたときにリンクが機能しますが、一度しか機能しません。2 回目にリンクをクリックすると、次のようになります。
- ajaxか
GET
- 304 (Not Modified) の応答を受け取ります
- コールバック関数を呼び出さない
jQuery.get()
ため、停止します。
キャッシュをクリアすると、再び機能します。したがって、IE が get 要求を行っていると想定していますが、過去にまったく同じファイルが既に要求されていることがわかり、プロセスが完全に停止します。
誰もこれに対する解決策を知っていますか? 304 エラーと ajax および IE のキャッシュに関するエラーについての言及を探しましたが、私のものと同じ問題はまだ見つかりませんでした。
どんな助けでも大歓迎です
(Windows 仮想マシン IE8、および Internet Explorer 9 の IE 8 モードでテスト済み)
解決済み
次のコードを document.ready 関数に追加するだけで、問題はなくなりました。
$.ajaxSetup ({cache: false});