微信小程序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 相关文章推荐
json简单介绍
Jun 10 Javascript
jquery js 获取时间差、时间格式具体代码
Jun 05 Javascript
通过js获取div的background-image属性
Oct 15 Javascript
JavaScript html5 canvas绘制时钟效果
Mar 01 Javascript
window.open不被拦截的简单实现代码(推荐)
Aug 04 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
Sep 01 Javascript
微信公众号 客服接口的开发实例详解
Sep 28 Javascript
微信小程序之ES6与事项助手的功能实现
Nov 30 Javascript
详解能在多种前端框架下使用的表格控件
Jan 11 Javascript
JavaScript获取用户所在城市及地理位置
Apr 21 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
Dec 09 Javascript
如何为vue的项目添加单元测试
Dec 19 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 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
PHP安全上传图片的方法
2015/03/21 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
JavaScript 变量命名规则
2009/09/23 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
基于Bootstrap实现Material Design风格表单插件 附源码下载
2016/04/18 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
深入浅析JavaScript中的scrollTop
2016/07/11 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
2019/11/12 Javascript
python解析html开发库pyquery使用方法
2014/02/07 Python
初学Python实用技巧两则
2014/08/29 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
Python按钮的响应事件详解
2019/03/04 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
护理专业自我鉴定
2014/01/30 职场文书
商务英语专业大学生职业生涯规划书
2014/09/14 职场文书
家长对孩子的寄语
2015/02/26 职场文书
预备党员考察意见范文
2015/06/01 职场文书
运动会800米赞词
2015/07/22 职场文书
升学宴学生致辞
2015/07/27 职场文书
SQL Server Agent 服务无法启动
2022/04/20 SQL Server