JSONPのIE対応 UTF8で動かない件
- 2009.08.24
- JavaScript
- JavaScript, JSON
IEでだけ動作しない事が多いようなのでメモ
JSON(JSONP)で
name( { 'data' :[ ['あいう','せそ'], ['かきく','けこ'], ['さしす','せそ'] ] } );
こんな感じのものを使おうとすると
']'がありませんというようなエラーが出る。
cgi等スクリプトで出力する場合はレスポンスヘッダを明示的に指定する必要がある。
perlなら
print "Content-type: application/json; charset=UTF-8;\n\n";
のように。
charsetは'utf8'ではダメで'UTF-8'か'utf-8'とハイフンが必要のようだ。
Content-typeも application/json とするのが良いらしい。
参考:
- jQueryの $.getJSON 等を使った Ajax でIEが動作しない件
http://feedtailor.jp/oishi/2007/07/jquery_getjson_ajax_ie.html - IE+Jsonではまった
http://d.hatena.ne.jp/khiker/20081026/javascript_json - jQueryでもはまるクロスブラウザ問題まとめ
http://labs.s-cubism.com/blog/2008/11/10/53/
追記:
どうやら呼び出す時に<script>タグで指定すれば(静的ファイルでも)動作する模様。
動的に育成しない場合はレスポンスヘッダの付加は難しいし使えるかも。
例)<script type="text/javascript" src="../json.js" charset="utf-8"></script>
この場合、type は text/javascript でのみ動作した。(win XP,IE8)
application/json や application/javascript では動作しなかった。
-
前の記事
Linux システムコマンドの標準出力をperlで受け取る 2009.07.30
-
次の記事
perlで外部プログラムを実行する際の注意点 2009.08.28