IE+Jsonではまった

jsonを扱ってゴニョゴニョするものを今日作っていたら,例によってFirefoxではすぐに上手くいったのだけど,
IEではまったのでメモしておく.



xmlhttprequestで同期させて値を取ってきていたのだけど,何故かresponseTextか空っぽになっている.
Firefoxだと値がちゃんとあるのに.
検索してみたり色々試してみた結果,送信されるヘッダに関係しているみたい.
ほとんど気にしたことはなかったのだけど,.htaccessにちゃんと書いてないとIEだとアウトの模様.
次のようなものを.htaccessに足したらちゃんと動いた.

AddCharset utf-8 json
AddType text/javascript json

これが問題だったということは,javascriptのコード自体に問題はなかったということだから,滅茶苦茶ハマった….


あと,FirefoxでもJSONで少し悩んだ.

{"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