2013-07-18 48 views
5

我写javascript应用程序,我使用backbone.js。对应用程序我有在一个页面多个视图大多数人的意见发送request(请求< - 他们是AJAX - 查询,但不是backbone.js ajax-query)到服务器在同一时间,他们有一个紧密的结果。如果服务器或网络出现问题,某些response会损坏并返回错误。问题在于所有错误需要通过向用户发送警报来显示,尽管看到越来越多的用户警报令人厌烦。我如何管理警报? 我使用settimeout来显示警报,但这种方式对减少无效警报计数。 如果你知道另一种方式,请告诉我关于它的事吗?如何管理Ajax响应错误

回答

4
function alertMajorError(errMsg) { 
     errMsg = typeof errMsg !== 'undefined' ? errMsg : 'Fatal Error!'; 
     var n = noty({layout:'center',type:'error',text:errMsg,timeout:false}); 
    } 
    $(document).ajaxError(function(event, jqxhr, settings, exception) { 
     if (exception == 'abort') return false; 
     alertMajorError('An AJAX error [' + exception + '] occurred in script: ' + settings.url + '<br \><br \>Please report this to the development team!'); 
     console.log(event, jqxhr, settings, exception); 
}); 

您可以设置一个默认AJAX error记者在主JS文件像我有。我使用jQuery noty插件!

+0

P.S.如果你想知道为什么我忽略'abort'错误,那是因为'Autocomplete'和其他一些异步小部件会故意中止,因此当输入参数发生变化时可以重新开始。它发生很多,所以我禁用了这些。 – DevlshOne

1

必须显示所有的错误... 好吧,然后只是不alert(),使用弹出div与错误,并显示他们在通知区域,例如,例如,在你页面的左上角。 看看它是如何在gmail中进行的:当发生ajax错误时,页面中央会显示一个小句通知,用户可以读取它,但整个界面不会被阻止。