避免代码暂停/冻结jQuery blockUI中的javascript错误

时间:2016-08-29 11:45:27

标签: javascript jquery ajax error-handling blockui

让我试着理解......

我们使用jQuery block UI plugin

阻止了用户界面
$(document).ajaxStart(function() {
  $.blockUI({
    message: '<h4><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> loading...</h4>'
  })
}).ajaxStop($.unblockUI);

有时,当代码抛出一些错误时:

JSON error on console

冻结屏幕上的加载消息不会消失:

loading message on the freezed screen

原因是:

  1. ajaxStart()启动时,会调用$.blockUI()

  2. ajaxStart()成功完成执行之前,它遇到错误。

  3. 永远不会到达
  4. ajaxStop()并且永远不会阻止用户界面($.unblockUI

  5. 因此,当ajaxStart()ajaxStop()之间出现错误时,我正在寻找的是一种显示自定义消息的方法。而不是代码暂停/冻结javascript错误。

    此外,当我尝试@Raghav's suggestion时,它不会冻结屏幕。

    $(document).ajaxStart(function() {
      $.blockUI({
        message: '<h4><i class="fa fa-circle-o-notch fa-spin fa-fw"></i> loading...</h4>'
      })
      throw Error;
      debugger;
    }).ajaxStop($.unblockUI).ajaxError($.unblockUI);
    

    没有意义吗?

1 个答案:

答案 0 :(得分:1)

您是否尝试使用ajaxError()

处理错误

请参阅:https://api.jquery.com/ajaxError/

$(document).ajaxError(function() {
   $.unblockUI();
   // Display error message here
   alert('Some error message');
}); 
$(document).ajaxStop(function() {$.unblockUI();});
$(document).ajaxStart(function() {
  $.blockUI({
    message: '<h4><i class="fa fa-circle-o-notch fa-spin fa-fw"></i>loading...</h4>'
  })
});

您还可以获取错误消息。有关详细信息,请参阅文档。

$(document).ajaxError(function( event, jqxhr, settings, thrownError ) {

   $.unblockUI();
   console.log(event, jqxhr, settings, thrownError);
});