jQueryのAjax通信success時に戻り値を返す方法
jQueryをつかってAjax通信して、その結果を関数の外に返したい場合の方法
- asyncをfalseにする
Ajax通信は非同期通信なので、通常は呼び出しを行ってsuccessの中で処理を行う。
Ajax通信を関数の中に入れて、その結果を関数の外でで受け取りたい場合は非同期通信をオフにして、通信が完了するまで待ってからreturnすれば大丈夫だった。
return_value = hoge(); alert(return_value); function hoge(){ var url = '/hoge'; var return_value; $.ajax({ url:url, async: false, // asyncをfalseにすることで、通信が終わるまで処理が待たれる success: function(msg, status){ return_value }, error: function(XMLHttpRequest, textStatus, errorThrown){ } }); return return_value; }
ただ、この方法だとレスポンスが著しく悪い場合には処理がとまったような感じになりそう。
ajaxSuccessを使ってコールバックを登録するような感じがいいのだろうか?
ajaxSuccess(handler) - jQuery API 1.4.4 日本語リファレンス - StackTrace
jQuery リファレンス:ajaxSuccess