javascript のライブラリとして最近 jQuery を使ってます。

選んだ理由は
- 複数ブラウザに対応(当然)
- 軽量である
- 最近のversion upで相当速度向上したらしい
- DOM指定にXpathやCSS表記が使える事(個人的な好み)
です。XPathという珍しいモノ(?)に触れるのもXMLの勉強になって良いです。(ちょっとチガウ)
さて、jQueryにもAjaxを非常に簡単に実装できる便利関数が幾つか用意されているんですが、リクエスト先からJSONオブジェクトが返ってくるようなケース(ほとんどがそうだと思いますが...)では $.getJSON を使うのが便利。
$.getJSON('script.php', {param1:value1, param2:value2}, function(json){
alert(json.value);
})
ってな感じに、eval する事無くいきなりJSONオブジェクトとして扱えるモノを引数として貰えるからです。1行でもjavasriptのコードを少なくしようという jQuery のコンセプトがこんな所にも表れているような気がします。
...が、FirefoxやSafariで実験している時は良いのですが、deployしてIEで確認してみると動かない...というか callback が呼ばれないという事態に陥る事があります。そんな時はリクエストを投げる先である script.php で明示的にConent-typeのレスポンスヘッダを指定してやると巧くいきます。
header('Content-type: application/json; charset=UTF-8');
jQueryを使ってAjaxを実装するとIEでのみエラーが起きたというページを参考にさせて貰ったのですが(筆者の方に感謝デス!)、これが分かるまで数時間をロスってしまいました。
あ。JSONのMimeTypeについて補足です。
少し気になって調べてみた所、JSONを返す時のMimeType指定は、安易に text/html とかにしちゃうと何かと問題が発生するそうなので、application/json にした方が良い模様。
またRFC4229によるとtext/javascript は obsolete だそうで、RFC4627にはちゃんと application/json と規定されてようです。ここは従っておいた方がよさげですね。
以上、 jQuery , Ajax, IE の組み合わせでハマりましたというメモと JSON の MimeType についてでした。


コメント (2)
はじめまして。
記事がお役たったようで幸いです。
私がハマったときにも、「同じような事でハマる人がいるかもなあ」と思って書いた記事ですので、役に立ってよかったです。
MimeTypeの件は確かにそうですね。
あまり考えていませんでした。私の記事も近いうちに直します。
投稿者: civic site | 2007年08月09日 13:14
日時: 2007年08月09日 13:14
>civic siteさん
コメント有り難うございます!!いぁいぁホントに助けられました。最近は何かでハマったとしても今回の例のようにどなたかが同じ経験をブログに書いて下さってる事が多いので助かります。便利な世の中になりましたよね^^ 今後とも宜しくお願い致します。
投稿者: oishi | 2007年08月10日 18:14
日時: 2007年08月10日 18:14