Vue中使用Ajax与后台交互

Posted mxsf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue中使用Ajax与后台交互相关的知识,希望对你有一定的参考价值。

一、下载依赖包

npm install --save axios

二、封装 ajax 请求模块

1. api/ajax.js

/*
ajax 请求函数模块
 */
import axios from ‘axios‘

export default function ajax (url = ‘‘, data = {}, type = ‘GET‘) {
  return new Promise(function (resolve, reject) {
    let promise

    if (type === ‘GET‘) {
      let dataStr = ‘‘
      Object.keys(data).forEach(key => {
        dataStr += key + ‘=‘ + data[key] + ‘&‘
      })
      if (dataStr !== ‘‘) {
        dataStr = dataStr.substring(0, dataStr.lastIndexOf(‘&‘))
        url = url + ‘?‘ + dataStr
      }
      promise = axios.get(url)
    } else {
      promise = axios.post(url, data)
    }

    promise.then(response => {
      resolve(response.data)
    }).catch(error => {
      reject(error)
    })
  })
}

2. api/index.js

/*
与后台交互模块
 */
import ajax from ‘./ajax‘

/**
 * 根据经纬度获取位置详情
 */
export const reqAddress = geohash => ajax(‘/api/position/‘ + geohash)

/**
 * 获取食品分类列表
 */
export const reqCategorys = () => ajax(‘/api/index_category‘)

/**
 * 根据经纬度获取商铺列表
 */
export const reqShops = ({longitude, latitude}) => ajax(‘/api/shops/‘, {longitude, latitude})

/**
 * 获取一次性验证码
 */
export const reqCaptcha = geohash => ajax(‘/api/position/‘ + geohash)

/**
 * 用户名密码登陆
 */
export const reqPwdLogin = (name, pwd, captcha) => ajax(‘/api/login_pwd‘, {name, pwd, captcha}, ‘POST‘)

/**
 * 发送短信验证码
 */
export const reqSendCode = phone => ajax(‘/api/sendcode‘ + {phone})

/**
 * 手机号验证码登陆
 */
export const reqSmsLogin = (phone, code) => ajax(‘/api/logon_sms/‘, {phone, code}, ‘POST‘)

/**
 * 根据会话获取用户信息
 */
export const reqUser = () => ajax(‘/api/userinfo‘)

/**
 * 用户登出
 */
export const reqLogout = () => ajax(‘/api/logout‘)

三、配置代理

proxyTable: {
    ‘/api‘: { // 匹配所有以 ‘/api‘ 开头的请求路径
        target: ‘http://localhost:4000‘, // 代理目标的基础路径
        changeOrigin: true, // 支持跨域
        pathRewrite: { // 重写路径:去掉路径中开头的‘/api‘
            ‘^/api‘: ‘‘
        }
    }
}    

 

以上是关于Vue中使用Ajax与后台交互的主要内容,如果未能解决你的问题,请参考以下文章

Ajax使用jQuery与后台交互

利用ajax与后台交互容易出现的问题及解决办法

Spring Mvc模式下Jquery Ajax 与后台交互操作

使用Ajax与后台接口Api交互(以登陆功能为例)

Vue和后台交互的方式

前端Vue框架 05 第三方插件(vuex: 组件间交互的(移动端), axios - 前后台(django): ajax, element-ui: 页面布局, jq+bs: jQuery+Boo