微信小程序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 相关文章推荐
关于实现代码语法标亮 dp.SyntaxHighlighter
Feb 02 Javascript
通过 Dom 方法提高 innerHTML 性能
Mar 26 Javascript
发一个自己用JS写的实用看图工具实现代码
Jul 26 Javascript
JQuery Ajax 跨域访问的解决方案
Mar 12 Javascript
jquery 全局AJAX事件使用代码
Nov 05 Javascript
jQuery+CSS3文字跑马灯特效的简单实现
Jun 25 Javascript
JS解决iframe之间通信和自适应高度的问题
Aug 24 Javascript
详解vue与后端数据交互(ajax):vue-resource
Mar 16 Javascript
JS获取数组中出现次数最多及第二多元素的方法
Oct 27 Javascript
NW.js 简介与使用方法
Feb 01 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
Dec 10 jQuery
关于React Native 无法链接模拟器的问题
Jun 21 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
python超简单解决约瑟夫环问题
2015/05/12 Python
Python批量按比例缩小图片脚本分享
2015/05/21 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
Python中enumerate()函数编写更Pythonic的循环
2018/03/06 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
python 实现线程之间的通信示例
2020/02/14 Python
在pytorch中实现只让指定变量向后传播梯度
2020/02/29 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
python 异步async库的使用说明
2020/05/04 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
HTML5注册页面示例代码
2014/03/27 HTML / CSS
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
2021/05/18 Vue.js
win11无法登录onedrive错误代码0x8004def7怎么办 ?
2022/04/05 数码科技
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技