如何在 AJAX 中结合 `async:false` 和 `beforeSend`?

问题描述

我有一个需要 async:falsebeforeSend 函数才能协同工作的 AJAX。我必须在 AJAX 调用之前启用加载微调器并在 AJAX 完成后停止微调器,但我也将 async:false 设置为 AJAX 完成后的下一步。我正在使用 jQuery Step Wizard

这是我当前的脚本。

ajax_success = false;
$.ajax({
    url         : url,type        : 'POST',data        : regist_data,cache       : false,contentType : false,processData : false,async       : false,dataType    : 'JSON',beforeSend  : function() {      
                        
                    $("#loading-div").removeAttr("class");
                    $("#loading-div").addClass("overlay overlay-on");
                  }
    })
    .done(function(data){
                    
        $("#loading-div").removeAttr("class");
        $("#loading-div").addClass("overlay overlay-off");
                    
        if(data.insert_status == "success"){
                        
            toastr.success("Your registration is successfully done",'Congratulations... ');
            ajax_success = true;
                        
        }else{
                        
            toastr.error("Please contact the Administrator",'Fatal error... ');
            ajax_success = false;
            return false;
        }
    })
    .fail(function(jqXHR,textStatus,errorThrown){
                    
        $("#loading-div").removeAttr("class");
        $("#loading-div").addClass("overlay overlay-off");
                    
        toastr.error(errorThrown,'Error... ');
        ajax_success = false;
        return false
    });

    if(ajax_success){   //I have put this condition inside AJAX done and outside AJAX call. Still same result 
        
            return true;                            
        }
        else{

            toastr.error("Fail");
            return false;                       
        }   

如果我删除 async:false,加载程序正在运行,toastr.success 将被执行。但是,它不会移动到向导的下一步。

如果我添加 async:false,加载程序将无法工作,但会进入下一步。

如何使它都正常工作?非常感谢任何帮助或其他方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)