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

  • 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
阅读 2.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题