jQuery的AJAX .fail()
是一个很好的错误处理程序,它可以处理“404 Not Found”错误等,但是我们怎样才能从.done()
内部故意调用它来处理一般错误情况,例如,当用户提供的数据不正确时?如何从.done()内部调用.fail()来处理一般错误?
8
A
回答
10
您可以在每种情况下使用在错误时调用的通用函数。
$.ajax('url')
.done(function(data, textStatus, jqXHR) {
if(data == 'Invalid') {
ajaxError(jqXHR, "usererror");
}
})
.fail(ajaxError);
function ajaxError(jqXHR, textStatus, errorThrown) {
console.log('Ajax error: ' + textStatus);
}
3
@ Juhana的代码对大多数情况都是很好的。
但是,如果可能出现的错误不能由data
检查能够可靠地预测独自一人,然后再考虑这个变体:
$.ajax('url').done(function(data, textStatus, jqXHR) {
try {
var dataLooksGood = ......;//(boolean) Test data for predictable data errors here
if(!dataLooksGood) throw(new Error("data invalid");)
//Handle data here.
//Any naturally-ocurring errors or further manually-thrown errors will be caught below.
}
catch(err) {
ajaxError(jqXHR, "AJAX successful but: " + err.message);
}
}).fail(ajaxError).always(function() {
//Here do whatever is necessary after success or error
});
function ajaxError(jqXHR, textStatus, errorThrown) {
console.log('AJAX error: ' + textStatus);
}
通过捕获错误,always
处理程序将被允许即便不可预测的火错误发生。因此,无论发生什么错误,您都可以更好地保证“加载...”消息或微调图形被杀死。
相关问题
- 1. jQuery fire .always处理程序全部附加.done/.fail处理程序
- 2. 如何处理reducer内部的错误?
- 3. 如何处理webview内部的错误?
- 4. 何时使用。于是,.done,.fail
- 5. 获取一般错误处理功能
- 6. Backbone的一般错误处理程序
- 7. php session_start一般错误处理
- 8. Python内部错误处理
- 9. 如何通过Ajax处理HTTP Response 500错误代码“.fail()”trigger?
- 10. 哪一个应该用在jquery ajax调用的情况下,成功/错误回调或done()/ fail()链接函数
- 11. 如何编写AngularJS一般错误处理程序窗体
- 12. 使用winjs.promise实现.done()。fail()方法
- 13. 错误处理内部或外部类?
- 14. jQuery ajax请求是否总是调用done或fail方法?
- 15. Can Deferred.pipe()可以阻止后续的.done和.fail的调用吗?
- 16. 你如何处理来自AJAX调用的错误?
- 17. 如何使用Android WebView处理“内部服务器错误”?
- 18. 500内部服务器错误错误试图使用ErrorDocument来处理请求
- 19. 使用拦截器的Angular错误处理的一般方式
- 20. 异常处理内部错误
- 21. 内存部分处理错误
- 22. $ .ajax()。fail()不工作$ .ajax()。done()是
- 23. 从片段调用函数..没有活动来处理错误
- 24. 如何处理来自ndb.put_multi的错误
- 25. 如何处理来自DataGridView的错误
- 26. Express.js:从路由处理函数调用下一个(错误)是否调用全局错误处理中间件?
- 27. Python 3多处理:内部和超时错误处理和回调
- 28. 如何处理内存不足错误?
- 29. 如何处理Spring/EJB/Mockito ...代理上的内部调用?
- 30. 自定义错误处理程序返回不同的错误比一般错误处理程序
一旦'.done()'被执行并且你在回调中,决定在相同的promise对象上执行'.fail()'是否太迟了?您应该使用更传统的JavaScript错误处理,例如异常或错误检查,或将自己的错误回调放在对象上。 – jfriend00 2013-03-10 08:22:15