主干错误处理
Backbone error handling
我使用主干库
服务器要求对每个请求进行授权
因此,任何对服务器的请求都可以返回401错误
如何处理fetch()
调用模型后的401错误,并使用相同的选项调用fetch()
?
我在模型中使用了错误处理程序:
var Stores = Backbone.Collection.extend({
initialize: function(models, options) {
var self = this;
this.options = options;
this.on({
'error': function(model, xhr, options) {
if (xhr.status == 401) { // Not authorized
API.restoreToken(function() {
self.fetch(options);
});
}
}
});
}
});
但问题是:当我调用self.fetch(options);
时,对象options
已经封装了success
函数。因此,self.fetch(options);
不调用原始的success
函数
服务器要求对每个请求进行授权
这看起来像是一个全局性的东西,所以使用$.ajaxPrefilter()
将非常适合。引用自此处
描述:在发送每个请求之前以及在
$.ajax()
处理这些请求之前,处理自定义Ajax选项或修改现有选项。
例如,重制每个ajax请求的错误函数
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
// Save original function
var originalError = options.error
// Let's hack
options.error = function(ejqXHR, textStatus, errorThrown){
if(ejqXHR.status == 401) {
API.restoreToken(function() {
//Do magic, probably reAjax with options
//Probably add anti-infinite-ajax mechanism
});
}else{
//If not 401 handle it originally
originalError(ejqXHR, textStatus, errorThrown)
}
}
}
使用self.fetch(self.options)
;
相关文章:
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- RxJS:在循环中处理错误.js自定义驱动程序
- 通过 AJAX 检索 Blob 时处理错误消息
- Chai正如承诺:当承诺抛出错误时,处理错误
- 如何处理错误'控制台未定义'在powershell中
- Bloodhound的新Typeahead是如何处理错误的
- 请求管道处理错误
- Angular Jasmine SpyOn$resource处理错误
- 如何或如何使用firebase有效地处理错误
- 以处理错误的方式启动javascript承诺蓝鸟链
- JavaScript Regex over CSS:如何处理错误的类
- 模态中的 Django 形式:动态重定向和处理错误
- 在 Angular 中使用拦截器处理错误的通用方法
- Angular JSON-RPC:处理错误
- AngularJS - 处理错误错误:[ng:areq] 在此特殊情况下 (?)
- 绕过 javascript 的 chrome 和 FF 后台选项卡处理错误
- 如何使用 Q 和 JS 捕获或失败来处理错误
- 使用 window.onerror 和 try-catch 块处理错误之间的差异
- jQuery $.get 在处理错误时返回白色错误页
- 处理错误后提交索引数据库事务