3

次のコードを使用して、Ajax経由でユーザーにログインしています。

  //Capture the login_ajax form
  $("#login_ajax").submit(function () {
    //First we fade out the header-login div
    $("#header-login").fadeOut('fast', function() {
      $(this).html("Loading").fadeIn('fast'); //Fade in loaading
    });
    $.post("db/login.php",
           { username: $("#username").val(), password: $("#password").val() },
           function(data) {
             $("#header-login").fadeOut('fast', function() { //Fade out loading
               $(this).html(data).fadeIn('fast'); //Fade in data
             });
           });
    return false;
  });

私の問題は、リクエストが非常に高速に処理されているため、フェードエフェクトが互いに重なり合っており、リクエストが表示するデータを返しても、「読み込み中」のままになっていることです。私はこれを間違っていますか?

サイトで他のajaxフォームを使用していて、それらが「読み込み」をトリガーしたくないため、jQueryのajaxStartとajaxStartを使用できません。

御時間ありがとうございます

4

2 に答える 2

3

これを試して:

  //Capture the login_ajax form
  $("#login_ajax").submit(function () {
    //First we fade out the header-login div
    $("#header-login").fadeOut('fast', function() {
      $(this).html("Loading").fadeIn('fast'); //Fade in loaading
    });
    $.post("db/login.php",
           { username: $("#username").val(), password: $("#password").val() },
           function(data) {
             $("#header-login").stop().fadeOut('fast', function() { //Fade out loading
               $(this).html(data).fadeIn('fast'); //Fade in data
             });
           });
    return false;
  });

を呼び出すと.stop()、コールバックは発生しません。これにより、後で発生するのを防ぐことができ.html("Loading")ます。 完全な読み取りについては、ここを参照してください

于 2010-02-27T01:41:17.157 に答える
0

最初のメソッドのコールバックにフォームを投稿してみてfadeInください(コードサンプルの5行目)。私が間違っていなければ、それはそれらのアニメーション効果のよりエレガントな連鎖を保証するはずです。

于 2010-02-27T01:45:37.563 に答える