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