jQuery Ajax调用不处理.done

时间:2015-07-08 06:31:22

标签: javascript jquery ajax

我一直在反对这张桌子,但我不确定为什么javascript / jQuery(1.71)在做其他事情之前没有完成它的任务。

我正在调用一个严格来说是jQuery Ajax调用的函数。 该函数执行Ajax部分,但.done在离开函数之前没有被处理并返回到原始调用函数。

如果仔细查看代码,我会删除非必要代码,但会离开调用。所以我调用processAjax函数。当我浏览它时,调用该函数,执行Ajax过程,然后它返回到dups函数,并在处理完成部分之前触发警报(在这里停止')。

发生了什么?!?

以下是一些代码:

function dups(){
    $('#dupChecker').val(2);
    if ($('#spDegree').length){
    // do logic here

    }

    else if ($('#meetingID').length){
    // do logic here            
    }

    else {
    // do logic here            
    }

    processAjax(user, actDate, meetID, degree, act);

    alert('stopping here');

    return 0;

};

function processAjax(a,b,c,d,e){

    $.ajax({
        url: "deSubmit_testDups.cfm",
        cache:false,
        method: "POST",
        data: {id:a, aDate:b, meet:c, degree:d, act:e},
        dataType: "html"
    })          

    .done(function( html ) {
        myResult = parseInt($.trim( html ));
        alert ('myresult= '+ myResult);
        if (myResult == 0){
            $('#submitBTN').prop("disabled",false);
            $('#errorMsg').css("visibility","hidden");
            $('#dupChecker').val(1);
        }
        else {
            $('#submitBTN').prop("disabled",true);
            $('#errorMsg').css("visibility","visible");
            $('#dupChecker').val(0);
        }
    })

    .fail(function( jqXHR, textStatus ) {
    alert( "Request failed: " + textStatus );
    });

};

1 个答案:

答案 0 :(得分:-1)

function dups(){
    $('#dupChecker').val(2);
    if ($('#spDegree').length){
    // do logic here

    }

    else if ($('#meetingID').length){
    // do logic here            
    }

    else {
    // do logic here            
    }

    processAjax(user, actDate, meetID, degree, act, function(resp){
         alert('stopping here');
    });



    return 0;

};

function processAjax(a,b,c,d,e, callback){

    $.ajax({
        url: "deSubmit_testDups.cfm",
        cache:false,
        method: "POST",
        data: {id:a, aDate:b, meet:c, degree:d, act:e},
        dataType: "html"
    })          

    .done(function( html ) {
        myResult = parseInt($.trim( html ));
        alert ('myresult= '+ myResult);
        if (myResult == 0){
            $('#submitBTN').prop("disabled",false);
            $('#errorMsg').css("visibility","hidden");
            $('#dupChecker').val(1);
        }
        else {
            $('#submitBTN').prop("disabled",true);
            $('#errorMsg').css("visibility","visible");
            $('#dupChecker').val(0);
        }
        callback();
    })

    .fail(function( jqXHR, textStatus ) {
        alert( "Request failed: " + textStatus );
        callback();
    });

};

希望这会对你有所帮助。您可以使用回调来使其同步。您还可以将ajax响应传递给回调。