学习笔记之ajax

一、相关(vue)

1.axios.js
安装:npm install axios --save
使用:
①可以封装在https.js(文件名自定义)文件中,也可以直接使用;
②在vue入口文件中引入封装文件
③使用;this.fetchPost;this.fetchGet;
④请求头添加自定义数据;
在服务端的响应头的Access-Control-Request-Headers中添加相同的key;
例:
前端:axios.defaults.headers[“token”] = “123456789”;
后端:header(‘Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept,token’);
token为前端发送的自定义数据的key。

import https from './https';

Vue.use(https);
import axios from 'axios';
import qs from 'qs';

axios.defaults.timeout = 5000;                        //响应时间
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';        //配置请求头
axios.defaults.baseURL = 'http://192.168.1.100';   //配置接口地址
//POST传参序列化(添加请求拦截器)
axios.interceptors.request.use((config) => {
  //在发送请求之前做某件事
  if(config.method  === 'post'){
    config.data = qs.stringify(config.data);
  }
 //可以在这添加http请求数据的加密
  return config;
},(error) =>{
  console.log('错误的传参')
  return Promise.reject(error);
});
//返回状态判断(添加响应拦截器)
axios.interceptors.response.use((res) =>{
  //对响应数据做些事
  //可以在这添加http请求返回数据的解密
  //var encryptor = new jsencrypt();
  //encryptor.setPublicKey(pu);
  //res.data = encryptor.encrypt(res.data);
  //console.log(res)
  if(!res.data.success){
    return Promise.resolve(res);
  }
  return res;
}, (error) => {
  console.log('网络异常')
  return Promise.reject(error);
});
//自定义vue全局方法fetchPost、fetchGet
export default {
  install(Vue)  {
    Vue.prototype.fetchPost = function(url, param) {
      return new Promise((resolve, reject) => {
        axios.get(url, {params: param})
          .then(response => {
            resolve(response)
          }, err => {
            reject(err)
          })
          .catch((error) => {
            reject(error)
          })
      })
    };
    Vue.prototype.fetchGet = function(url, param) {
      return new Promise((resolve, reject) => {
        axios.get(url, {params: param})
          .then(response => {
            resolve(response)
          }, err => {
            reject(err)
          })
          .catch((error) => {
            reject(error)
          })
      })
    };
  }
};

2.qs.js
安装:npm install qs
3.jsencrypt.js
安装:npm install jsencrypt
直接封装使用:

import jsencrypt from 'jsencrypt';

export function encrypt(publickey,data){
  var encryptor = new jsencrypt();
  encryptor.setPublicKey(publickey);
  return encryptor.encrypt(data);
}
export function decrypt(privatekey,data){
  var decryptor = new jsencrypt();
  decryptor.setPrivateKey(privatekey);
  return decryptor.decrypt(data);
}

export default {
  encrypt,
  decrypt
};

封装为vue全局方法

import jsencrypt from 'jsencrypt';

export default {
  install(Vue)  {
    Vue.prototype.encrypt = function(publickey,data){
      var encryptor = new jsencrypt();
      encryptor.setPublicKey(publickey);
      return encryptor.encrypt(data);
    };
    Vue.prototype.decrypt = function(privatekey,data){
      var decryptor = new jsencrypt();
      decryptor.setPrivateKey(privatekey);
      return decryptor.decrypt(data);
    };
  }
};

4.async await,异步等待
vue为例:

async created() {
    var params = { gameToday: null,gameNotice: null };
    await this.fetchPost('serve.php',params ).then((data) => {
      this.data = data.data;
      console.log(this.data)
    }).catch(err=>{
      console.log(err)
    })    
  },
  //效果为created的执行顺序与同步类似,会等待异步执行完成后才继续执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值