- ベストアンサー
jQuery1.9.1でajax応答処理が動かない
- jQuery1.9.1でajaxを使用した場合、response受信時の処理が動作しない問題が発生しています。
- java script側のコードに問題がある可能性があります。jQueryのバージョンやライブラリの読み込みなどを確認してください。
- サーブレット側ではデバッガで動作を確認済みですが、ajaxのリクエスト送信後の処理が実行されないことがあります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
詳しい理由はjqueryの内部仕様に明るくないので答えられませんが、動作させるためには以下の2つが考えられます。 1)success/error/(それらの後に呼ばれる)completeのどれを使うかはプログラムする方の都合によると思います。 $.ajax(success:function(){},); 2)$.ajaxを呼び出す関数に対して.doneを指定する xhr_call.done()(function(略){};) function xhr_call(){ return $.ajax() } 参考URL http://semooh.jp/jquery/api/ajax/jQuery.ajax/options/ http://stackoverflow.com/questions/8840257/jquery-ajax-handling-continue-responses-success-vs-done (より参考になりました)
その他の回答 (1)
- shockatz
- ベストアンサー率80% (153/191)
サーバサイドからの戻り値を正しく評価するために、$.ajaxの呼び出し側で、dataType : 'xml' を明示する必要がありますが、done コールバック中では alert を打っているだけなので、ご提示のプログラムでは、特に不都合な点はないと思います。 ただ、ブラウザによって、dataTypeのデフォルト値が違ってくる可能性があるため、正しく指定するに越したことはありません。 一つ気になるところは、呼び出す url(しかもドメイン部分)に変数が用いられている事で、ひょっとして外部ドメイン(同一ドメイン別ポートの場合も含む)が指定されてないですか? もしそうなら、(動作する環境もある、という言葉を信用して)サーバサイドでクロスドメインリクエスト対策を施してあったとしても、このままではクライアント側の制限で動作しない環境があります。 (具体的にはInternet Explorer 9より前) クロスドメインリクエストでない場合は読み飛ばしてください。
お礼
少々トラブルがありまして、レスが遅くなってしまい申し訳ありません。 また、回答ありがとうございます。 なんとか解決しました。 事の顛末はもう一方の回答者様へのお礼に記載した通りで、 ご指摘いただいた外部ドメイン指定によるものではありませんでしたが、勉強になりました。 ベストアンサーは複数設定できないことから、申し訳ありませんが今回は最初に回答して下さった方に設定させていただいております。
お礼
少々トラブルがありまして、レスが遅くなってしまい申し訳ありません。 また、回答ありがとうございます。 なんとか解決しました。 原因としては"IEでは使用できないjava script処理が混ざっており、 以降のスクリプトがまともに動いていなかった。" ということのようです。(コンソール出力処理) まさかそのような処理が混ざっているとは思わず 質問の投稿時にはその部分は省いてしまっていました。 コード作成者が「IE9で動くか試すために書いた」と言っていたことから IE9で動かないコードがは含まれていないと思いこんでしまい、 説明無しでコードだけ渡されとりあえずお試しで動かそうと四苦八苦、 コード作成者にはもはや連絡がつかず焦ってしまって 別ブラウザで試さずに質問を投稿してしまったというのが今回の顛末です。 コンソール出力は必要なかったので削除したところ正常動作しました。