takahashiakira
10/2/2015 - 7:32 AM

errorHandling Module v1.1.0

errorHandling Module v1.1.0

errorHandling Module

AJAXの際にサーバからStatusをハンドリングしてstatusとresを返すモジュール

Module

/**
 * errorHandling Module Description v1.1.0
 * @fileoverview エラーハンドリングしてstatusとresを返すモジュール
 *    対応ブラウザはモダンブラウザ(IE8以上)
 * @return {Object}
 *    {String} status - 'success'/'serverError'/'networkError'
 *    {Object} res - data.responseJSONかJSONパースされたdata.responseText
 */
var errorHandling = (function () {
  var NETWORK_ERROR = '通信エラーです';
  /**
   * Entry point
   * @param {Object} data - statusなどを含んだAPIからのレスポンス
   */
  var getResponse = function (data) {
    var status = '';
    var res = (data.responseJSON) ? data.responseJSON : JSON.parse(data.responseText);
    if(data.status === 200){
      if(res.apiStatus === 'success') { //* res.apiStatusの部分はAPIの仕様に合わせる */
        //* 通信成功の場合 */
        status = 'success';
      }else if(res.apiStatus ==='error'){
        //* サーバーエラーの場合 */
        status = 'serverError';
        //* alert(res.message); // res.messageの部分はAPIの仕様に合わせる */
      }
    }else{
      //* 通信エラーの場合 */
      status = 'networkError';
      alert(NETWORK_ERROR);
    }
    return {
      status:status,
      res:res
    };
  };
  return { getResponse: getResponse };
})();

Usage

JS

$.ajax({
  type: 'get',
  url: url,
  data: data
}).always(function(data){
  var response = errorHandling.getResponse(data);
  var res = response.res;
  var status = response.status;
  if(status === 'success'){
    // success
    console.log('res');
  }else if(status === 'serverError'){
    // serverError
    console.log('res');
  }else{
    // error
    console.log('res');
  }
  return this;
});