微信小程序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 css styleFloat和cssFloat
Mar 15 Javascript
javascript setAttribute, getAttribute 在不同浏览器上的不同表现
Aug 05 Javascript
基于jquery的给文章加入关键字链接
Oct 26 Javascript
jquery中获取元素的几种方式小结
Jul 05 Javascript
jQuery中delegate与on的用法与区别示例介绍
Dec 20 Javascript
一个支付页面DEMO附截图
Jul 22 Javascript
原生JavaScript生成GUID的实现示例
Sep 05 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
Aug 14 Javascript
js中时间格式化的几种方法
Jul 22 Javascript
vue组件实践之可搜索下拉框功能
Nov 25 Javascript
React+TypeScript+webpack4多入口配置详解
Aug 08 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
最小化数据传输――在客户端存储数据
2006/10/09 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
js 操作符实例代码
2009/10/24 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
node.js中的buffer.slice方法使用说明
2014/12/10 Javascript
javascript省市区三级联动下拉框菜单实例演示
2015/11/29 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
js图片上传前预览功能(兼容所有浏览器)
2016/08/24 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
微信小程序 生成携带参数的二维码
2019/10/23 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[01:02:34]TFT vs VGJ.T Supermajor 败者组 BO3 第二场 6.5
2018/06/06 DOTA
python Crypto模块的安装与使用方法
2017/12/21 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
对python生成业务报表的实例详解
2019/02/03 Python
Python实现通过解析域名获取ip地址的方法分析
2019/05/17 Python
python 字符串追加实例
2019/07/20 Python
浅谈python 调用open()打开文件时路径出错的原因
2020/06/05 Python
详细分析Python collections工具库
2020/07/16 Python
CSS实现限制字数功能当对象内文本溢出时显示省略标记
2014/08/20 HTML / CSS
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
员工拓展培训方案
2014/02/15 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android