0

I am using the following code to check if a name exists. However, I cannot get the return value whether true or false for further validation. How can I get the return value from this function?

function check_availability() //check auction name if exists
        {
        var new_Auction =$('#txtAuction').val();
        $.post('checkAuction.php',{txtAuc:$('#txtAuction').val()},
            function(result){
                if(new_Auction.length==0)
                {
                    $('#message').html('');
                }
                else
                {
                if(result==1)
                {
                    $('#message').html(new_Auction + ' is Available').css('color','#0C3');
                    $('input[id=btnCreate]').removeAttr('Disabled');
                 //$('h4.alert_success').css("display","block");
                 //$('h4.alert_success').html(new_Auction + ' is Available');  
                 //$('h4.alert_success').fadeOut(5000); 
                return true;

                }
                 else
                 {

                    $('#message').html(new_Auction + ' is not Available').css('color','#F00');
                    $('input[id=btnCreate]').attr('Disabled','Disabled');
                    //$('h4.alert_error').css("display","block"); 
                    //$('h4.alert_error').html(new_Auction + ' is not available'); 
                    return false;
                 }
                }
            }
        );
        }
4

1 に答える 1

0

AJAX は非同期です。コールバックから非同期呼び出しに戻ることはできません。AJAX 呼び出しの結果に依存するコードを、コールバックから戻ろうとするのではなく、コールバック内に移動します。

$.post('checkAuction.php', {txtAuc:$('#txtAuction').val()}, function(result){
    //You cannot return a value from in here!
});

非同期リクエストを行うと、実行は次のステートメントで続行されるため、しばらくして非同期コールバックを実行するときに制御が「戻る」場所がありません。

于 2012-10-01T10:14:51.953 に答える