civic site

あるプログラマの勉強部屋。iPhoneとかデジタルガジェット系のネタ

  • トップ
  • ダウンロード(Download)
  • Fix HootSuiteの入手
  • プログラム開発
  • 書籍紹介記事
RSS フィード:
記事フィード
コメントフィード

jQueryを使ってAjaxを実装するとIEでのみエラーが起きた

2006/10/12 by civic

JavaScriptって、数年前だったら大したチェックしかできないと思っていたのですが、最近は見方が変わっています。
特に、DOM操作なんかができると知ってからは、「こんなにいろいろなことができるんだ」と関心しています。(気づくの遅い)

そんなわけでJavaScript関係のライブラリも勉強中です。ライブラリは現状では乱立状態で、どれを使えばいいのか本当に迷ってしまいます。今は「jQuery」というのを使っています。この後は「Yahoo!UIライブラリ」というのを勉強しようと考えています。

JavaのJSP、jQueryと、Ajaxを使って、ためしにいろいろ作っているのですが、Ajax関係でちょっとハマったのでメモしておきます。

あるページから、jQueryのAjaxメソッドを使って、サーバーサイドのJSPを呼び出しています。
このJSPはAjaxで呼び出されることを前提としていて、HTMLを出力するのではなく、JSONオブジェクトを出力するようにしています。
つまり、JSPといってもこんな感じで動的にJavaScriptを出力しています。


{
  result: [<c:foreach ...>"${var}", </c:foreach>]
}

そしたら、Firefoxでは動作するのに、なぜかIEでは「System error」というエラーが出て通信が完了しないのです。
ちなみにエラーというのは、クライアントに返ってJavaScriptで発生します。jQueryの中で発生しています。

jQueryの方にデバッグ文を入れて、やっと原因が分かりました。
JSPでは、pageディレクティブのpageEncoding属性で、”Windows-31J”というシフトJIS相当のエンコーディングを指定しています。するとレスポンスヘッダに
Content-type: text/html; charset=Windows-31J
Content-type: application/json; charset=Windows-31J
といった出力がされます。このContent-Typeだと、IEでjQuery内のメソッドで、Ajax通信をした後に、System errorとなってしまうのです。

回避策としては、charset=Shift_JISとか、UTF-8となればOKでした。
Shift_JISだと、「~」や「丸1」といった文字が返却できなかったので、UTF-8で返却することにしました。

2007/08/11追記
「feedtailor Inc. 大石裕一の開発ブログ」さんで指摘されているように、JSONを返却するにはMimeTypeをapplication/jsonにしたほうがよさそうです。

関連記事
  • NetBeans6.1のJavaScriptサポートを検証
  • jsconsoleでiPhoneからTwitter APIを実行してみた
  • AjaxTagsプロジェクトの混乱
  • JavaでAjaxを使う時の考察
  • 楽ちんAjax JSPカスタムタグ「AjaxTags」

Share on Facebook
このエントリーをはてなブックマークに追加

Posted in 日記 | コメント!(2)

“jQueryを使ってAjaxを実装するとIEでのみエラーが起きた”へのコメント:2件

  1. on 2008/05/20 at 6:03 PM1tormato

    情報ありがとうございます。ハマってたのが解消しました。
    IE7, jquery 1.2.3, apache 2.2.8 のセットでも全く同じ現象でした。
    httpd.conf に
    AddCharset WIndows-31J .html
    とか
    AddDefaultCharset Windows-31J
    とか自ら書いたんですが、素人が余計なことするものじゃないってことですか・・・。
    cp932 のつもりで書いたのがアダとなりました。

  2. on 2008/05/20 at 6:24 PM2civic

    役に立ったようで幸いです。
    同じ不具合に遭遇した人が、検索してたどり着いて、解決できたのであれば、記事を載せたかいがありますね。

  • 磯野ー!フライドチキン作ろうぜー!

    シーズンオフだからダッチオーブン安いの?
    ダッチオーブンで作る料理にシーズンは関係ない! 詳細...

    スキレット単体ですき焼きとか
    スキレット...
  • 最近の投稿

    • Androidアプリ「バイツァ」リリース!
    • 印刷通販のデザイングラフィックで名刺作った
    • Amazon Basicsっていうプライベートブランドを見てみる
    • BBQ用にコスパ高いオガ炭(オガタン)を使ってみる
    • 西山のキャンプ場「ゆうぎ」を見てきた
  • 人気の記事

    • エクスプローラからExcelファイルを読み取り専用…
    • 印刷通販のデザイングラフィックで名刺作った…
    • StrutsでListや配列のActionForm…
    • Wi-Fi版iPad必携のiPhone連携アプリC…
    • Strutsでのダウンロード(サンプル)…
  • 最近のコメント

    • 後部座席でiPadを に civicsite より
    • 後部座席でiPadを に junkdj より
    • iRever Story HD買ってみたレビュー に tth より
  • HDMIケーブル安っ!

    HDMIケーブル、Amazonなら安く買えますよ!
    電気屋で買っちゃダメシリーズNo.1のHDMIケーブル!
    Amazonと電気屋で価格比較してみてください。詳細...

    楽天のももっと安かった!詳細...
  • メニュー

    • ダウンロード(Download)
    • Fix HootSuiteの入手
    • プログラム開発
      • AjaxTagsを使ってみる
      • eclipse -乗り換え→ NetBeans
      • Jettyサーバを使ってみる
      • JNIを使ってみる
    • 書籍紹介記事
  •  

    2006年10月
    日 月 火 水 木 金 土
    « 9月   11月 »
    1234567
    891011121314
    15161718192021
    22232425262728
    293031  
  • あいかわらずメモリ安い

    MacBook, iMacユーザーにオススメ!
    Macでもこんなに安く+8GBのメモリ増設!詳細...
  • カテゴリー

    • android
    • camp
    • GoogleAppEngine
    • HootSuite
    • ipad
    • iPhone
    • iPhone_iPod touch
    • Mac
    • NetBeans
    • Rails学習
    • Struts学習
    • プログラム
    • 情強お得ネタ
    • 日記
    • 書籍紹介
    • 未分類
    • 注目商品
    • 男の料理
  • About

    Profile
    civic site
    あるプログラマの勉強部屋。iPhoneとかデジタルガジェット系のネタ
    479 件の記事と387件のコメントがあります。

  • Google+ Page

    civic site
    on Google+
  • アーカイブ

  • ブログロール

    • Civic Apps
    • Planet NetBeans
  • メタ情報

    • ログイン
    • 投稿の RSS
    • コメントの RSS
    • WordPress.org
  • あわせて読みたい
civic site © 2012 All Rights Reserved. WordPress Theme by Venetian Blinds