如何解决如何在 AJAX 中结合 `async:false` 和 `beforeSend`?
我有一个需要 async:false
和 beforeSend
函数才能协同工作的 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 举报,一经查实,本站将立刻删除。