微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在 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 举报,一经查实,本站将立刻删除。