微信小程序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 Event学习第二章 Event浏览器兼容性
Feb 07 Javascript
读jQuery之三(构建选择器)
Jun 11 Javascript
js实现数字每三位加逗号的方法
Feb 05 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
Aug 28 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
May 28 Javascript
Bootstrap Validator 表单验证
Jul 25 Javascript
jQuery中fadein与fadeout方法用法示例
Sep 16 Javascript
微信小程序 两种为对象属性赋值的方式详解
Feb 23 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
Mar 13 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 Javascript
浅谈node模块与npm包管理工具
Jan 03 Javascript
antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作
Aug 06 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
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
php模拟登陆的实现方法分析
2015/01/09 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
js 代码集(学习js的朋友可以看下)
2009/07/22 Javascript
IE8 下的Js错误HTML Parsing Error...
2009/08/14 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
thinkphp标签实现bootsrtap轮播carousel实例代码
2017/02/19 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
2017/02/21 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
对mac下nodejs 更新到最新版本的最新方法(推荐)
2018/05/17 NodeJs
vue中如何去掉空格的方法实现
2018/11/09 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
一些你可能不熟悉的JS知识点总结
2019/03/15 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
简单介绍Ruby中的CGI编程
2015/04/10 Python
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
详解Swift中属性的声明与作用
2016/06/30 Python
Python的requests网络编程包使用教程
2016/07/11 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
Whittard官方海外旗舰店:英国百年茶叶品牌
2018/02/22 全球购物
来自南加州灵感的工作和娱乐服装:TravisMathew
2019/05/01 全球购物
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
加拿大专业美发产品购物网站:Chatters
2021/02/28 全球购物
初中英语教学反思
2014/01/25 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
通知怎么写?
2019/04/17 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
Python 用户输入和while循环的操作
2021/05/23 Python
MySQL中一条update语句是如何执行的
2022/03/16 MySQL