微信小程序HTTP接口请求封装代码实例


Posted in Javascript onSeptember 05, 2019

1.方法封装(新建文件夹util,工具文件,在文件夹下创建request.js文件,用于对方法封装)

request.js:

var app = getApp();
//项目URL相同部分,减轻代码量,同时方便项目迁移
//这里因为我是本地调试,所以host不规范,实际上应该是你备案的域名信息
var host = 'http://localhost:8081/demo/';
 
/**
 * POST请求,
 * URL:接口
 * postData:参数,json类型
 * doSuccess:成功的回调函数
 * doFail:失败的回调函数
 */
function request(url, postData, doSuccess, doFail) {
 wx.request({
  //项目的真正接口,通过字符串拼接方式实现
  url: host + url,
  header: {
   "content-type": "application/json;charset=UTF-8"
  },
  data: postData,
  method: 'POST',
  success: function (res) {
   //参数值为res.data,直接将返回的数据传入
   doSuccess(res.data);
  },
  fail: function () {
   doFail();
  },
 })
}
 
//GET请求,不需传参,直接URL调用,
function getData(url, doSuccess, doFail) {
 wx.request({
  url: host + url,
  header: {
   "content-type": "application/json;charset=UTF-8"
  },
  method: 'GET',
  success: function (res) {
   doSuccess(res.data);
  },
  fail: function () {
   doFail();
  },
 })
}
/**
 * module.exports用来导出代码
 * js文件中通过var call = require("../util/request.js") 加载
 * 在引入引入文件的时候" "里面的内容通过../../../这种类型,小程序的编译器会自动提示,因为你可能
 * 项目目录不止一级,不同的js文件对应的工具类的位置不一样
 */
module.exports.request = request;
module.exports.getData = getData;

2.page里面随便一个创建一个文件夹,创建四种文件,在js里面加入 

//引入代码
var call = require("../util/request.js")
 
Page({
 data: {
  pictureList: [],
 },
  
 onLoad: function () {
  var that = this;
  //调用封装的方法,为了方便我直接在页面加载的时候执行这个方法
  call.getData('lunbo.do', this.shuffleSuc, this.fail);
  // 无用,前面忘记注释,抱歉
  // this.loadMsgData(that);
 },
 shuffleSuc: function (data) {
  var that = this;
  that.setData({
   pictureList: data.rows
  })
  //我后面测试了一下,直接this.setData也可以,但是因为我在没有使用封装方法的时候
  //this.setData报过错,不能直接用this,所以我在赋值的时候一般都会加上var that = this;
  //这句话算是一个不是习惯的习惯
 },
 fail: function () {
  console.log("失败")
 },
})

将回调函数写在page里面,在调用封装方法的时候通过this.方法名调用,这样就能确保that.setData方法有效,如果是写在外面的function方法小程序编译器不会报错,但是在wxml中bindtap无效,我也没深究,同时在call.getData方法中调用的时候虽然能够进入该方法,但是赋值是无效的,所以我不建议用这种方式:

function shuffleSuc(data) {
 var that = this;
 that.setData({
  pictureList: data.rows
 })
}

3. 运行之后通过小程序的控制台AppData可以打印data里面的值,同时也可以根据需要在页面中显示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让JavaScript拥有类似Lambda表达式编程能力的方法
Sep 12 Javascript
推荐10个超棒的jQuery工具提示插件
Oct 11 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
Aug 17 Javascript
AngularJS 使用 UI Router 实现表单向导
Jan 29 Javascript
一分钟理解js闭包
May 04 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
需要牢记的JavaScript基础知识
Sep 25 Javascript
Canvas实现放射线动画效果
Feb 15 Javascript
vue+element实现打印页面功能
May 20 Javascript
微信小程序后端实现授权登录
Feb 24 Javascript
vue+高德地图实现地图搜索及点击定位操作
Sep 09 Javascript
微信小程序实现底部弹出框
Nov 18 Javascript
layui table去掉右侧滑动条的实现方法
Sep 05 #Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
Sep 05 #Javascript
layui动态加载多表头的实例
Sep 05 #Javascript
如何阻止小程序遮罩层下方图层滚动
Sep 05 #Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 #Javascript
解决layer.msg 不居中 ifram中的问题
Sep 05 #Javascript
JS中比Switch...Case更优雅的多条件判断写法
Sep 05 #Javascript
You might like
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
2017/08/15 PHP
PHP7创建COOKIE和销毁COOKIE的实例方法
2020/02/03 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
jQuery控制div实现随滚动条滚动效果
2016/06/07 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python利用公共键如何对字典列表进行排序详解
2018/05/19 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
python selenium xpath定位操作
2020/09/01 Python
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
自荐信格式的六要素
2013/09/21 职场文书
中专生的个人自我评价
2013/12/11 职场文书
亲子读书活动方案
2014/02/22 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
环保建议书作文400字
2015/09/14 职场文书