使用方式

<!-- 把方法放入自建js文件,在需要的页面引用 -->
<script src="/utils/request.js" type="text/javascript"></script>

示例,根据实际需求更改

//封装Ajax请求
const baseUrl = ''
const token = ''
function getUrl(url, data) {
  if (data) {
    if (url.indexOf('?') === -1) {
      url = url + '?' + data
    } else {
      url = url + '&' + data
    }
  }
  return url
}
function setErrorPage(html) {
  if (parent.$('.iframe_page_wrapper #errorIframe').length > 0) {
    parent.$('.iframe_page_wrapper #errorIframe').contentDocument.html(html)
  } else {
    parent
      .$('.iframe_page_wrapper')
      .append(`<iframe width="100%" height="100%" id="errorIframe" name="errorIframe"></iframe>`)
    const dom = parent.$('#errorIframe')[0]
    const doc = dom.contentDocument || dom.contentWindow.document
    $(doc).children('html').html(html)
  }
}
function openMessage(type, msg) {
  if (top['message_' + type]) {
    top['message_' + type](msg)
  } else {
    message[type](msg)
  }
}
function getRefer() {
  let url = location.href
  let index = url.indexOf('?')
  let redirectTo = ''
  if (index !== -1) {
    let str = url.substr(index + 1) //取得所有参数
    let parameter = str.split('&') //各个参数放到数组里
    for (var i = 0; i < parameter.length; i++) {
      let index = parameter[i].indexOf('=')
      if (index !== -1) {
        let key = parameter[i].substring(0, index)
        let value = parameter[i].substr(index + 1)
        if (key === 'redirectTo') {
          redirectTo = value
        }
      }
    }
    if (redirectTo) {
      return redirectTo
    } else {
      return encodeURIComponent(window.location.href)
    }
  } else {
    return encodeURIComponent(window.location.href)
  }
}
$.extend({ // post请求
  post: function (url, data, unRefer) {
    return new Promise(function (resolve, reject) {
      if (!unRefer) {
        url = getUrl(url, 'redirectTo=' + getRefer())
      }
      var request = {
        type: 'POST', //请求的类型,GET、POST等
        url: baseUrl + url, //向服务器请求的地址。
        contentType: 'application/json', //向服务器发送内容的类型,默认值是:application/x-www-form-urlencoded
        data: JSON.stringify(data), //请求参数集合
        timeout: '10000', //设置本地的请求超时时间(单位是毫秒)
        cache: false, //设置浏览器是否缓存请求的页面
        xhrFields: { withCredentials: true }, //请求自动带cookie
        success: function (res) {
          if (res.code === undefined) {
            resolve(res)
            setErrorPage(res)
            return
          }
          if (res.code === 0) {
            openMessage('success', res.msg == '' ? '执行成功' : res.msg)
            resolve(res)
          } else {
            if (res.code === 302) {
              if (res.msg !== '') {
                openMessage('success', res.msg)
              }
              $.getPage(res.data, {}, true)
              return
            }
            if (res.code > 0 && res.code < 100000) {
              openMessage('error', res.msg)
            } else {
              openMessage('warning', res.msg)
            }
            reject(res)
          }
        },
        error: function (error) {
          reject(error)
          openMessage('warning', '网络错误')
        },
      }
      $.ajax(request)
    })
  },
  getPage: function (url, data, unRefer) { // 浏览器直接访问
    let queryStr = ''
    for (let k in data) {
      if (k === 'redirectTo') {
        unRefer = true
      }
      if (queryStr === '') {
        queryStr += k + '=' + data[k]
      } else {
        queryStr += '&' + k + '=' + data[k]
      }
    }
    if (unRefer) {
      window.location.href = getUrl(url, queryStr)
    } else {
      window.location.href = getUrl(url, queryStr ? queryStr + '&redirectTo=' + getRefer() : 'redirectTo=' + getRefer())
    }
  },
  get: function (url, data) { // get请求
    let queryStr = ''
    for (let k in data) {
      if (queryStr === '') {
        queryStr += k + '=' + data[k]
      } else {
        queryStr += '&' + k + '=' + data[k]
      }
    }
    return new Promise(function (resolve, reject) {
      var request = {
        type: 'GET',
        url: baseUrl + url + queryStr,
        timeout: '10000', //设置本地的请求超时时间(单位是毫秒)
        xhrFields: { withCredentials: true }, //请求自动带cookie
        success: function (res) {
          resolve(res)
        },
        error: function (error) {
          reject(error)
        },
      }
      $.ajax(request)
    })
  },
  upload: function (url, data) { // 文件上传
    return new Promise(function (resolve, reject) {
      var request = {
        type: 'POST',
        url: baseUrl + url,
        data: data,
        processData: false, // 告诉jQuery不要去处理发送的数据
        contentType: false, // 告诉jQuery不要去设置Content-Type请求头
        timeout: '60000', //设置本地的请求超时时间(单位是毫秒)
        cache: false, //设置浏览器是否缓存请求的页面
        xhrFields: { withCredentials: true }, //请求自动带cookie
        xhr: function () {
          //用以显示上传进度
          var xhr = $.ajaxSettings.xhr()
          if (xhr.upload) {
            xhr.upload.addEventListener(
              'progress',
              function (event) {
                if (event.lengthComputable) {
                  let percent = Math.floor((event.loaded / event.total) * 100)
                  console.log(percent)
                }
              },
              false
            )
            xhr.upload.addEventListener(
              'readystatechange',
              function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                  console.log(xhr.responseText)
                }
              },
              false
            )
          }
          return xhr
        },
        success: function (res) {
          resolve(res)
        },
        error: function (error) {
          reject(error)
        },
      }
      $.ajax(request)
    })
  },
})