2010-12-03 10 views
1

私は自分のユーザーに電子メールアドレスを入力させ、入力時にいくつかの検証をしています。電子メールがデータベースにあるかどうかをチェックし、結果に応じて返品を返します。問題は、10回のうち1回だけそこに座って成功することがないため、ユーザーが読み込み中のアニメーションを見ていることです。私は思ったんだけど、文字長が5未満であれば私のjquery ajaxコールがちょうどハングする場合があります

function check_email(email) { 

    var event_id = $('input[name=event_id]').val(); 


    // submit the data to the booking form again 
    $.ajax({ 
    type: 'POST', 
    url: 'check_booking_email.php', 
    cache: false, 
    data: 'booking_email='+email+'&event_id='+event_id+'', 
    success: function(data) { 
     $('#next').remove(); 
     $('.booking_email_helper').after(data); 
    } 
    }); 

} 



$(document).ready(function(){ 

    $("#booking_email").keyup(function() { 

    var e_long = $('#booking_email').val().length; 

    if(e_long > 5) { 

    $('#checking_email .email_loader').fadeIn(); 
    $('#checking_email .text').html ('<span class="black">We are just checking your email.</span>'); 


    // show checking email animator... 
    $('#checking_email').fadeIn(); 


    clearTimeout($.data(this, "timer")); 
    var ms = 1000; //milliseconds 
    var val = this.value; 
    var wait = setTimeout(function() { 
     check_email(val); 
    }, ms); 
    $.data(this, "timer", wait); 

    } // end if e_long 

    }); 

基本的には、keyUpイベントに、アニメーションをロードし、AJAX呼び出しを開始...

コードは次のようになります私のコードであなたのために目立つ何かがあると、この問題を引き起こしている可能性があります。何らかの理由でそれが掛かってしまったら、もう一度試してみる方法がありますか?私は失敗の結果で多くを果たしていない...私は、それが失敗した場合は、それ自体の内部の関数を呼び出すような何かをするのが一般的な練習かどうか疑問に思っています。

思考?

答えて

1

いつでもローディングインジケータを隠しているようではありません(多分Qに含めるのを忘れたかもしれません)。 $.ajaxコールの成功のコールバックで#checking_emailをフェードアウトしてみてください。

success: function(data) { 
     $('#next').remove(); 
     $('.booking_email_helper').after(data); 
     $("#checking_email").fadeOut(); 
} 
関連する問題