Javascript ajaxStop事件在任何ajax回调中出现运行时错误后停止触发

Javascript ajaxStop事件在任何ajax回调中出现运行时错误后停止触发,javascript,jquery,ajax,Javascript,Jquery,Ajax,让我们看看我的代码: $(“#senderr”)。在(“单击”,函数(){ $.get(“/echo/json”)。然后(函数(res){ //让我们想象一下发生了什么 抛出“错误”; }); }); $(#sendok”)。在(“单击”,函数()上{ $.get(“/echo/json”)。然后(函数(res){ $(“#log”)。追加(“发送确定””; }); }); $(文档).on(“ajaxStart”,函数(){ $(“#log”)。追加(“开始””; }); $(文档).on(“

让我们看看我的代码:

$(“#senderr”)。在(“单击”,函数(){
$.get(“/echo/json”)。然后(函数(res){
//让我们想象一下发生了什么
抛出“错误”;
});
});
$(#sendok”)。在(“单击”,函数()上{
$.get(“/echo/json”)。然后(函数(res){
$(“#log”)。追加(“
  • 发送确定”
  • ”; }); }); $(文档).on(“ajaxStart”,函数(){ $(“#log”)。追加(“
  • 开始”
  • ”; }); $(文档).on(“ajaxStop”,函数(){ $(“#log”)。追加(“
  • 停止”
  • ”; });

    如果按“发送确定”,您可以看到ajaxStart和ajaxStop事件已成功触发。但是,如果只按一次“send err”按钮,就会在ajax回调中抛出运行时错误,那么之前的“send ok”行为将永远不会再起作用—ajaxStop事件停止触发


    为什么jQuery要这么做?除了在任何地方使用try-catch之外,我还能做些什么来防止这种情况发生?

    这就是对我有效的方法:

    jQuery(window).on('error', function (e) {    
        // This tells jQuery no more ajax Requests are active
        // (this way Global start/stop is triggered again on next Request)
        jQuery.active--;
        //Do something to handle the error    
    });
    

    看一看谢谢,这对我帮助很大-我不得不停止jquery BlockUI的工作,这里是添加
    $的正确位置。unbui()