微信小程序使用request网络请求操作实例


Posted in Javascript onDecember 15, 2017

本文实例讲述了微信小程序使用request网络请求操作。分享给大家供大家参考,具体如下:

小程序提供了很多api,极大的方便了开发者,其中网络请求api是wx.request(object),这是小程序与开发者的服务器实现数据交互的一个很重要的api。

官方参数说明如下

OBJECT参数说明:

参数名 类型 必填 说明
url String 开发者服务器接口地址
data Object、String 请求的参数
header Object 设置请求的 header , header 中不能设置 Referer
method String 默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
success Function 收到开发者服务成功返回的回调函数,res = {data: '开发者服务器返回的内容'}
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

最简单的用法如下(以POST请求为例)

bindSearchChange:function(e){
 var keyword = e.detail.value;
 wx.request({
 url:'xxxxxxxxx',
 data:{},
 header: {'Content-Type': 'application/json'},
 success: function(res) {
 console.log(res)
 }
 })
}

下面我们把请求写在service文件下的http.js文件中,代码如下

var rootDocment = 'hxxxxx';//你的域名
function req(url,data,cb){
 wx.request({
 url: rootDocment + url,
 data: data,
 method: 'post',
 header: {'Content-Type': 'application/json'},
 success: function(res){
 return typeof cb == "function" && cb(res.data)
 },
 fail: function(){
 return typeof cb == "function" && cb(false)
 }
 })
}
module.exports = {
 req: req
}

其中module.exports是将req方法暴露出去使得别的文件中可以使用该方法,由于js函数是异步执行的,所以return 的是回调函数,而不是具体的数据

为了其他文件方便调用此方法,我们在根目录的app.js文件中将其注册成为全局函数,如下

//app.js
var http = require('service/http.js')
App({
 onLaunch: function () {
 //调用API从本地缓存中获取数据
 var logs = wx.getStorageSync('logs') || []
 logs.unshift(Date.now())
 wx.setStorageSync('logs', logs)
 },
 getUserInfo:function(cb){
 var that = this
 if(this.globalData.userInfo){
 typeof cb == "function" && cb(this.globalData.userInfo)
 }else{
 //调用登录接口
 wx.login({
 success: function () {
  wx.getUserInfo({
  success: function (res) {
  that.globalData.userInfo = res.userInfo
  typeof cb == "function" && cb(that.globalData.userInfo)
  }
  })
 }
 })
 }
 },
 globalData:{
 userInfo:null
 },
 func:{
 req:http.req
 }
})

这时这个req就是全局的了,在调用时我们可以使用getApp.func.req()来调用,具体如下

var app = getApp()
Page({
 data: {
 },
 onLoad: function (opt) {
 //console.log(opt.name)
 app.func.req('/api/get_data',{},function(res){
 console.log(res)
 });
 }
})

微信小程序提供了很多api,包括网络,媒体,数据等,也提供了很多组件,使开发小程序变得很方便。

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
jQuery checkbox全选/取消全选实现代码
Nov 14 Javascript
Javascript判断图片尺寸大小实例分析
Jun 16 Javascript
使用mini-define实现前端代码的模块化管理
Dec 25 Javascript
jQuery实现手机号码输入提示功能实例
Apr 30 Javascript
javascript实现动态改变层大小的方法
May 14 Javascript
谈谈VUE种methods watch和compute的区别和联系
Aug 01 Javascript
在vue中添加Echarts图表的基本使用教程
Nov 22 Javascript
JS集合set类的实现与使用方法示例
Feb 01 Javascript
vue中keep-alive组件的入门使用教程
Jun 06 Javascript
javascript 关于赋值、浅拷贝、深拷贝的个人理解
Nov 01 Javascript
Javascript模拟实现new原理解析
Mar 03 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
May 09 Javascript
VS Code转换大小写、修改选中文字或代码颜色的方法
Dec 15 #Javascript
Angular中管道操作符(|)的使用方法
Dec 15 #Javascript
浅谈Vue SPA 首屏加载优化实践
Dec 15 #Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
Dec 15 #Javascript
Angular2开发环境搭建教程之VS Code
Dec 15 #Javascript
JavaScript原生实现观察者模式的示例
Dec 15 #Javascript
基于javascript 显式转换与隐式转换(详解)
Dec 15 #Javascript
You might like
php实现的农历算法实例
2015/08/11 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
Function.prototype.call.apply结合用法分析示例
2013/07/03 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
JQuery查找DOM节点的方法
2015/06/11 Javascript
基于jQuery Ajax实现上传文件
2016/03/24 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
深入理解JS中的substr和substring
2016/04/26 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
jQuery EasyUi 验证功能实例解析
2017/01/06 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
Node.js开发第三方微信公众平台
2017/06/05 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
python列表操作使用示例分享
2014/02/21 Python
python中bisect模块用法实例
2014/09/25 Python
Python中使用hashlib模块处理算法的教程
2015/04/28 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
浅析Python的命名空间与作用域
2020/11/25 Python
文员个人求职自荐信
2013/09/21 职场文书
教师自我鉴定范文
2013/11/10 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
2015年实习单位评语
2015/03/25 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
SpringBoot使用ip2region获取地理位置信息的方法
2022/06/21 Java/Android