微信小程序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 相关文章推荐
Js 随机数产生6位数字
May 13 Javascript
有关于JS构造函数的重载和工厂方法
Apr 07 Javascript
jQuery html()方法使用不了无法显示内容的问题
Aug 06 Javascript
JavaScript必知必会(九)function 说起 闭包问题
Jun 08 Javascript
javascript实现数据双向绑定的三种方式小结
Mar 09 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
protractor的安装与基本使用教程
Jul 07 Javascript
js分页之前端代码实现和请求处理
Aug 04 Javascript
D3.js实现拓扑图的示例代码
Jun 30 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
Aug 31 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
Sep 29 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
Oct 12 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
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
关于全局变量和局部变量的那些事
2013/01/11 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
js和jQuery设置Opacity半透明 兼容IE6
2016/05/24 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
js中let能否完全替代IIFE
2019/06/15 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
vue.js 解决v-model让select默认选中不生效的问题
2020/07/28 Javascript
python妙用之编码的转换详解
2017/04/21 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
对于Python深浅拷贝的理解
2019/07/29 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
Python内置函数locals和globals对比
2020/04/28 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
python 统计list中各个元素出现的次数的几种方法
2021/02/20 Python
Python爬虫爬取ts碎片视频+验证码登录功能
2021/02/22 Python
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
个人职业生涯规划书1500字
2013/12/31 职场文书
市场推广策划方案
2014/06/02 职场文书
财务统计员岗位职责
2015/04/14 职场文书
开会通知短信大全
2015/04/20 职场文书
2015年机关后勤工作总结
2015/05/26 职场文书
2016春季幼儿园开学寄语
2015/12/03 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
MySQL里面的子查询的基本使用
2021/08/02 MySQL
Java中的继承、多态以及封装
2022/04/11 Java/Android