axios跨域请求一个接口数据,返回了axios的config,header等结构,但是jQuery没有,怎么处理?

发布于 2022-09-11 18:53:47 字数 1852 浏览 13 评论 0

  • axios跨域请求一个接口数据,返回了axios的config,header等结构,但是jQuery没有,怎么处理?

图片描述

图片描述

拦截器封装代码如下

import axios from 'axios'
// import qs from 'qs'
// 拦截器封装axios
axios.defaults.baseURL = process.env.NODE_ENV === 'production' ? URL : '/api'
axios.defaults.timeout = 5000
axios.interceptors.request.use(function (config) {
  // 请求之前的处理,token,(js-cookie),store处理
  config.headers['Content-type'] = 'application/x-www-form-urlencoded;chartset=UTF-8'
  return config
}, function (error) {
  return Promise.reject(error)
})

axios.interceptors.response.use(function (response) {
  // token验证,cookie时效性,store处理
  if (response.status === 200) {
    return Promise.resolve(response)
  } else {
    return Promise.reject(response)
  }
}, function (error) {
  return Promise.reject(error)
})

function encodeSearchParams (obj) {
  const params = []
  if (!obj) return ''
  Object.keys(obj).forEach((key) => {
    let value = obj[key]
    // 如果值为undefined我们将其置空
    if (typeof value === 'undefined') {
      value = ''
    }
    // 对中文进行编码
    params.push([key, encodeURIComponent(value)].join('='))
  })
  return params.join('&')
}

function apiAxios (requestData) {
  let httpConfig = {
    method: requestData.method || 'GET',
    url: `${requestData.url}?${encodeSearchParams(requestData.params)}`,
    data: requestData.data || '',
    timeout: 5000
  }
  return new Promise((resolve, reject) => {
    axios(httpConfig)
      .then((res) => {
        if (res.status === 200) {
          resolve(res)
        } else {
          console.log('数据请求失败')
        }
      })
      .catch((error) => {
        reject(error)
      })
  })
}

export default apiAxios

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文