IE+Jsonではまった
jsonを扱ってゴニョゴニョするものを今日作っていたら,例によってFirefoxではすぐに上手くいったのだけど,
IEではまったのでメモしておく.
xmlhttprequestで同期させて値を取ってきていたのだけど,何故かresponseTextか空っぽになっている.
Firefoxだと値がちゃんとあるのに.
検索してみたり色々試してみた結果,送信されるヘッダに関係しているみたい.
ほとんど気にしたことはなかったのだけど,.htaccessにちゃんと書いてないとIEだとアウトの模様.
次のようなものを.htaccessに足したらちゃんと動いた.
AddCharset utf-8 json AddType text/javascript json
これが問題だったということは,javascriptのコード自体に問題はなかったということだから,滅茶苦茶ハマった….
{"hoge":"foo" "fuga":"bar" ... "hidebu":"tawaba"}
のようなJSONがあったとき,これをそのままevalしても駄目だということ.
エラーがでてアレ?と思った.
A: eval( responseText ); B: eval("(" + responseText + ")");
つまり,上のAではアウトでBのように括弧で括ってあげなければならないみたい.
ググって出てきたこのページのお陰で助かった.
- http://d.hatena.ne.jp/sshi/20060904/p1
上記ページによると,中括弧{}がjsonではなく,
Javascriptの構文(ブロック?)として認識されているからだろうとのこと.
なるほろ.
javascriptは便利で作るのも楽しいんだけど,ブラウザ毎の挙動を埋めるのがたいへんでまいるね.
IEに対応させるのが特につらい.1つだけ突出して違いすぎ.
その上自分の環境Linuxだし(これは自分の問題なのだろうけどw).
更新時刻
- 2008/10/26/21:15