![](/img/trans.png)
[英]Backbone Collection Fetch - Override ajax error handler with custom error handler
[英]jquery ajax custom error handler
我正在JSON服務器上編寫一個骨干js Web應用程序,該服務器以J Send規范格式返回JSON響應。
以下是該格式的一些示例:
GET /帖子
{
"status": "success",
"data": {
"posts" [
{"id": 1, "title": "A blog post"},
{"id": 2, "title": "another blog post"}
]
}
}
發布/發布
{
"status": "fail",
"data": {
"title": "required"
}
}
默認情況下,$ .ajax中的“error”事件由http代碼觸發,但由於JSend規范格式根本不使用HTTP代碼,因此我必須重寫$ .ajax錯誤處理程序。
默認情況下它的工作方式(http代碼):
$.ajax({
error: function() {
// Do your job here.
},
success: function() {
// Do your job here.
}
});
如何重寫解析主體時觸發的$ .ajax錯誤處理程序以及“status”屬性是“失敗”還是“錯誤”?
盡管看似違反直覺,但您必須將其置於success
功能中。 只需自己查看價值:
$.ajax({
error: function() {
// Handle http codes here
},
success: function(data) {
if(data.status == "fail"){
// Handle failure here
} else {
// success, do your thing
}
}
});
為了保持干燥,您可以使用以下內容:
function JSendHandler(success, fail) {
if (typeof success !== 'function' || typeof fail !== 'function') {
throw 'Please, provide valid handlers!';
}
this.success = success;
this.fail = fail;
}
JSendHandler.prototype.getHandler = function () {
return function (result) {
if (result.status === 'fail') {
this.fail.call(this, arguments);
} else {
this.success.call(this, arguments);
}
}
};
function success() { console.log('Success'); }
function error() { console.log('Fail!'); }
var handler = new JSendHandler(success, error);
$.ajax({
error: error,
success: handler.getHandler()
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.