当前位置:   article > 正文

微信小程序之 wx.request 封装 ajax加载数据封装案例_"import { sendcode, mobilelogin } from \"../../uti

"import { sendcode, mobilelogin } from \"../../utils/requst/api.js\";"

微信小程序之 wx.request

  1. pages 同级 创建文件夹 utils;
    在这里插入图片描述
    2.utils 文件夹中创建 requst 文件夹;
    在这里插入图片描述
    3.requst 中创建 文件 ajax.js api.js url.js
    在这里插入图片描述
    4.ajax.js
// Promise封装请求   options是一个对象里面的属性有url, data, method, load
//url 对应请求路径  data对象请求的参数  method对应请求方法  load对应是否显示加载中 1显示 0不显示
function fetch(options) {
  if (options.load == 1) {
    wx.showLoading({
      mask: true,
      title: '加载中'
    })
  }

  return new Promise((resolve, reject) => {
    // 所有的请求加上固定的参数  区分是简单请求还是特殊请求
    //如果options.data是对象 表示是简单请求
    if (Object.prototype.toString.call(options.data) === '[Object Object]') {
      options.data.auth_token = '';
      options.data.uuid = '';
    }
    //如果是json字符串的是特殊请求
    if (Object.prototype.toString.call(options.data) == "[object String]") {
      let obj = JSON.parse(options.data)
      obj.auth_token = '';
      obj.uuid = '';
      options.data = JSON.stringify(obj)
    }
    // console.log(options.data)
    // console.log(options)
    wx.request({
      url: options.url,
      data: options.data,
      header: {
        "content-type": "application/json"
      },

      // header: {
      //   "application/x-www-form-urlencoded;charset=utf-8"
      // },

      method: options.method,
      success: function (res) {
        // console.log(res);
        options.load == 1 ? wx.hideLoading() : '';
        // 如果没有登录的操作
        // console.log(res.data.code);
        if (res.data.code == 'login') {
          console.log('请先登录')
          return;
        }
        if (res.data.statusCode == 500) {
          wx.showToast({
            title: '系统错误,请联系开发人员!',
            mask: "true",
            icon: 'none',
            duration: 2000
          })
          return;
        }
        // if (res.data.code != 1) {
        //   wx.showToast({
        //     title: res.errMsg,
        //     mask: "true",
        //     icon: 'none',
        //     duration: 3000
        //   })
        //   return;
        // }

        resolve(res); //把请求到的数据发到引用请求的地方
      },
      fail: function (err) {
        options.load == 1 ? wx.hideLoading() : ''
        wx.showToast({
          title: "网络连接超时",
          icon: 'none',
          duration: 2000,
        })
        reject(err)
        console.log(err);

      }
    })
  });
}


module.exports = {
  fetch
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87

5.url.js

let mainUrl = 'https://wx.xxx.com/wechat' //测试服
module.exports = {
  mainUrl: mainUrl,
}
  • 1
  • 2
  • 3
  • 4

6.api.js

const app = getApp()
const myUrl = require("./url.js");
import {
  fetch
} from "./ajax.js" //引入封装的请求

export function getAreas(parmas) {
  return fetch({
    url: myUrl.mainUrl + '/getAreas', //请求的域名
    data: parmas, //请求的参数
    method: 'GET', //请求的方法
    load: 0 //是否需要显示加载中的图标
  })
}

// 获取服务器时间
export function get_time(parmas) {
  return fetch({
    url: myUrl.mainUrl + '/get_time',
    data: parmas,
    method: 'GET',
    load: 0
  })
}


//特殊请求
// export function addAdvertisements(params) {
//   return fetch({
//     url: myUrl.mainUrl,
//     data: JSON.stringify(params),
//     method: 'post',
//     load: 0
//   })
// }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  1. 小程序页面中使用;xx.js 文件
import {
  activityInfo
} from "../../utils/requst/api.js";
Page({
	data: {
		la_id:1,
		groupinfo:[]
	},
	onLoad: function (options) {	
	    this.getactivityInfo();
	},
	getactivityInfo: function () {//调用封装的接口
    let params = {
      la_id: this.data.la_id
    }
    activityInfo(params).then((res) => { //调用封装的接口
      // console.log(res);
      this.setData({
        groupinfo: res.data.data
      })
    })
  },
  
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

完成。。。
ajax.js页也是百度抄来的 其他不懂的可以留言给我。。。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/148024?site
推荐阅读
相关标签
  

闽ICP备14008679号