JSONPのIE対応 UTF8で動かない件

JSONPのIE対応 UTF8で動かない件

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 とするのが良いらしい。

参考:

追記:

どうやら呼び出す時に<script>タグで指定すれば(静的ファイルでも)動作する模様。
動的に育成しない場合はレスポンスヘッダの付加は難しいし使えるかも。


例)<script type="text/javascript" src="../json.js" charset="utf-8"></script>

この場合、type は text/javascript でのみ動作した。(win XP,IE8)
application/json や application/javascript では動作しなかった。