微信開發ajax封裝

function wxPromisify(fn) {
    return function (obj = {}) {
        return new Promise((resolve, reject) => {
            obj.success = function (res) {
                //成功
              console.log("成功了了·····" + res);
              setTimeout(function () {
                wx.hideLoading();
              }, 100);
              if(res.data.code=="200"||res.data.code=="10219"){
                resolve(res)
              }else{//拋出異常
                setTimeout(function () {
                  wx.hideLoading();
                }, 100);
                wx.showModal({
                  title: '提示',
                  content: res.data.message,
                  confirmColor: '#118EDE',
                  showCancel: false,
                  success: function (res) {
                    if (res.confirm) {
                      //console.log('用戶點擊肯定')    
                    }
                  }
                });
              }
            }
            obj.fail = function (res) {
                //失敗
                console.log("失敗了·····"+res);
                setTimeout(function () {
                  wx.hideLoading();
                }, 100);
                wx.showToast({
                  title: '服務器暫時沒法鏈接',
                  icon: 'loading',
                  duration: 2000
                })
                reject(res)
            }
            fn(obj)
        })
    }
}
//不管promise對象最後狀態如何都會執行
Promise.prototype.finally = function (callback) {
    let P = this.constructor;
    return this.then(
        value => P.resolve(callback()).then(() => value),
        reason => P.reject(callback()).then(() => { throw reason })
    );
};
/**
 * 微信請求get方法
 * url
 * data 以對象的格式傳入
 */
function getRequest(url, data) {
    var getRequest = wxPromisify(wx.request)
    return getRequest({
        url: url,
        method: 'GET',
        data: data,
        header: {
            'Content-Type': 'application/json'
        }
    })
}

/**
 * 微信請求post方法封裝
 * url
 * data 以對象的格式傳入
 */
function postRequest(url, data) {
    var postRequest = wxPromisify(wx.request)
    return postRequest({
        url: url,
        method: 'POST',
        data: data,
        header: {
          "content-type": "application/x-www-form-urlencoded"
        },
    })
}

/**
 * 微信請求post方法封裝
 * url
 * data 以對象的格式傳入
 */
function postRequestJson(url, data) {
  var postRequest = wxPromisify(wx.request)
  return postRequest({
    url: url,
    method: 'POST',
    data: data,
    header: {
      'Content-Type': 'application/json'
    },
  })
}


/**
 * 微信請求post方法封裝
 * url
 * data 以對象的格式傳入
 */
function postRequestParamAndBody(url,param, data) {
  var str = "?";
  for (var key in param) {
    str = str + "&" + key + "=" + param[key]
  };
  var postRequest = wxPromisify(wx.request)
  return postRequest({
    url: url+str,
    method: 'POST',
    data: data,
    header: {
      'Content-Type': 'application/json'
    },
  })
}

/**
 * 微信請求put方法封裝
 * url
 * data 以對象的格式傳入
 */
function putRequest(url, data) {
  var str = "?";
  for (var key in data) {
    str = str + "&" + key + "=" + data[key]
  };
  var putRequest = wxPromisify(wx.request)
  return putRequest({
    url: url + str,
    method: 'PUT',
    data: data,
    header: {
      "content-type": "application/x-www-form-urlencoded"
    },
  })
}
/**
 * 微信請求put方法封裝
 * url
 * data 以對象的格式傳入
 * parmare對象傳入
 */
function putRequestParamAndBody(url, parmaer, data) {
  var str = "?";
  for (var key in parmare) {
    str = str + "&" + key + "=" + parmare[key]
  };
  var putRequest = wxPromisify(wx.request)
  return putRequest({
    url: url + str,
    method: 'PUT',
    data: data,
    header: {
      "content-type": "application/x-www-form-urlencoded"
    },
  })
}
/**
 * 微信請求delete方法封裝
 * url
 * data 以對象的格式傳入
 */
function deleteRequest(url, data) {
  var str="?";
  for(var key in data){
    str = str + "&" + key + "=" + data[key]
  };
  console.log(str);
  var deleteRequest = wxPromisify(wx.request)
  return deleteRequest({
    url: url + str,
    method: 'DELETE',
    data:data,
    header: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  })
}
module.exports = {
    postRequest: postRequest,
    getRequest: getRequest,
    putRequest: putRequest,
    postRequestJson: postRequestJson,
    deleteRequest: deleteRequest,
    postRequestParamAndBody: postRequestParamAndBody
}
相關文章
相關標籤/搜索