微信小程序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 相关文章推荐
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
Sep 02 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
Jun 06 Javascript
AngularJS入门教程(二):AngularJS模板
Dec 06 Javascript
JavaScript实现基于十进制的四舍五入实例
Jul 17 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
JavaScript表单验证的两种实现方法
Feb 11 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
Mar 02 Javascript
Angularjs修改密码的实例代码
May 26 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
Dec 07 Javascript
npm的lock机制解析
Jun 20 Javascript
javascript实现blob加密视频源地址的方法
Aug 08 Javascript
nuxt 每个页面head标签内容设置方式
Nov 05 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
html中select语句读取mysql表中内容
2006/10/09 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
深入php list()函数的详解
2013/06/05 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
javascript break指定标签打破多层循环示例
2014/01/20 Javascript
基于jquery实现发送文章到手机的代码
2014/12/26 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
jQuery增加与删除table列的方法
2016/03/01 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
Vue.js如何实现路由懒加载浅析
2017/08/14 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
2017/08/28 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
基于vue-cli3和element实现登陆页面
2019/11/13 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python实现屏幕截图的两种方式
2018/02/05 Python
python抓取文件夹的所有文件
2018/02/27 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
python中with用法讲解
2020/02/07 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
2020/02/27 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
python进度条显示之tqmd模块
2020/08/22 Python
python利用opencv保存、播放视频
2020/11/02 Python
详解css3中dispaly的Grid布局与Flex布局
2020/09/11 HTML / CSS
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
Internet体系结构
2014/12/21 面试题
2015年社区工作总结
2015/04/08 职场文书
mongodb数据库迁移变更的解决方案
2021/09/04 MongoDB