簡體   English   中英

jquery ajax自定義錯誤處理程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM