bradtosのWEB開発日記

WEB開発エンジニアbradtosによる、JavaScriptやHTML5/CSS3の最新情報などなど・・・



2009-04-14

IEにおけるjquery.ajax()

17:54

久々にAjaxな画面を書いたらちょっと壁に当ったのでメモ。


当たった壁というのは、タイトルどおりJquery.ajax()を使い

レスポンスにJSONデータを想定した際に

FF3Safari4ChromeはOKなのにIE7、8だと正常に動かない件。

厳密にはerrorで指定したコールバック関数が呼ばれてしまう。

他のブラウザだとsuccessで指定したコールバック関数が動くのに。


ajax()にはオプション引数のうち、dataTypeというパラメーターがあり、

jsonjsonp、textなどを指定できる。

これを指定するとレスポンスに対する解釈をしてくれて

データの扱いが便利になるという代物。

いろいろ試してみたがIE8標準のデバッガ「開発者ツール」には

相変わらずparseerrorの文字が。

つまり、それ以前の問題っぽい。



JqueryにおけるAjaxを解説しているサイトを調べて回ったところ、

結局レスポンスを返すサーバー側が原因と判明。

今回はサーバー側はPHPになっているのだが、

IEJSONデータをレスポンスとして判別させるためには

Content-Typeにapplication/jsonを指定しなければならないらしい。

XMLHttpRequestは本来XML向けだし仕方ないか。

というかJquery側のバグじゃないのか・・・


というわけでPHPのソースに

header('Content-Type: application/json;charset=UTF-8');

を追加したら難なく解決。

トラックバック - http://d.hatena.ne.jp/bradtos/20090414/1239699263