jQuery
IE8

IE8でjQueryのloadを扱うときに個人的に忘れてはいけないこと

More than 3 years have passed since last update.


IE8 + jQuery + load =

var method = $("#selectBoxA").val();

$("#selectBoxB").load("./path/" + method);

セレクトボックスAの選択に応じて動的にセレクトボックスBの中身を変える処理を考える。

事前に選択された内容に応じてmethodの値が変わって、結果、セレクトボックスBの中身が変わるという風に。IE8だとこれが動作せずにハマった。


だいたいキャッシュのせい

$.ajaxSetup({ cache: false });

「IE8 jQuery load」で検索して一番多かったのは上記の追記。

これをload前に埋め込むとキャッシュが悪さしないとのこと。

しかし、今回はこれでは解決できなかった。

どうやら私は他の方々とは別の次元でミスをしているらしい。。。


原因はエンコード

var method = $("#selectBoxA").val();

var address = encodeURI("./path/" + method);
$("#selectBoxB").load(address);

エンコードは忘れずに、ということだった。

最近のブラウザじゃあっさり動いてくれたんですが。。。(言い訳

同じ状況に嵌る人が居るかどうかはわからないけど、

次同じような事態に遭遇したときのためにメモ。