2016-08-01 8 views
2

http://i.imgur.com/eFjV8Uv.pngはなぜAJAXランニング4回

$("#login").on('click', function() { 
    $(".login .col2, .login .signin, .login .close").fadeOut(500, function() { 
     $(".login .spinner").fadeIn(500); 
     var username = $("#username").val(); 
     var password = $("#pw").val(); 
     var data = "username="+username+"&password="+password; 
     $.ajax({ 
      url: './api/prijava', 
      method: 'POST', 
      data: data, 
      dataType: 'json', 
      success: function(data) { 
       if(data.odg == 1) { 
        $(".login .spinner").fadeOut(500, function() { 
         $(".login .msg").append('Prijava uspješna').fadeIn(500, function() { 
          window.location = "./"; 
         }); 
        }); 
       } else if(data.odg == 2) { 
        $(".login .msg").css('background-color', 'rgba(0, 255, 0, 0.5)').append('<span>Prijava uspješna! Dobrodošli...</span>').fadeIn(500, function() { 
         window.location = "./?first=true"; 
        }); 
       } 
      }, 
      error: function(err) { 
       console.log(err); 
      } 
     }); 
    }); 
}); 

スクリーンショットログイン成功(ローカル言語)を示しているが、それは4回ではなく、一度それを示すべきです。一度ロードするとどうすればいいですか?

+0

.fadeOut([期間]、[完了])これは、セレクタを「一致する項目ごとにフェードアウトの完了時に実行しています。 login .col2、.login .signin、.login .close "4回実行している場合、4つのマッチがあると仮定しなければならないでしょう。 –

答えて

3

fadeOutへのコールバックは、選択した要素ごとに1回実行されます。代わりに、あなたはそれを解決するときに一度だけ実行されるためにpromiseを使用することができます。

$(selector).fadeOut(500).promise().then(function() { 
    // do ajax call here 
}); 
+0

速い応答をありがとう、答えとしてマークするのを忘れた:D – unm4sk

関連する問題