Ajax

ajaxの処理が完了してから実行したい処理がある。

More than 1 year has passed since last update.

(はてブロからの転記です)

ajaxってさ、非同期通信で便利なんだけど、処理結果によって後続の処理をどうするか決めたい時あるじゃん?

ajax実行(登録最大値を取得している)
 ↓
処理A

って書いても、ajaxの処理中に処理Aが実行されて、登録最大値越してるのに!なんか処理A走ってる!てきなことになりました。

結論からいうと、$.when $.doneってのを使いました。

    $.when(
        $.ajax({
            url:  '/check_max_user',
            type: 'POST',
            dataType: 'json',
            success: function(data, status, xhr) {
                if (!data.success) {
                    max_user_flg = true;
          alert('お腹いっぱいだお');
                    return false;
                } else {
                    max_user_flg = false;
                }
            }
        })
    ).done(function(){
    if (!max_user_flg) {
以下略

こうすると、whenの中身実行してからdoneの処理を実行するわけですよ。