微信小程序使用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 相关文章推荐
js实现从右向左缓缓浮出网页浮动层广告的方法
May 09 Javascript
jQuery网页选项卡插件rTabs用法实例分析
Aug 26 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
javascript实现仿百度图片的瀑布流加载效果
Apr 20 Javascript
BOM系列第二篇之定时器requestAnimationFrame
Aug 17 Javascript
基于AngularJS实现iOS8自带的计算器
Sep 12 Javascript
支持移动端原生js轮播图
Feb 16 Javascript
JS鼠标滚动分页效果示例
Jul 05 Javascript
Node+OCR实现图像文字识别功能
Nov 26 Javascript
JS判断数组四种实现方法详解
Jun 29 Javascript
JavaScript实现网页计算器功能
Oct 29 Javascript
Vue看了就会的8个小技巧
Jan 21 Vue.js
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
模板引擎Smarty深入浅出介绍
2006/12/06 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
ThinkPHP开发框架函数详解:C方法
2015/08/14 PHP
Zend Framework教程之Zend_Config_Xml用法分析
2016/03/23 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
PHP 断点续传实例详解
2017/11/11 PHP
javascript hasFocus使用实例
2010/06/29 Javascript
js Function类型
2011/12/04 Javascript
分享一个asp.net pager分页控件
2012/01/04 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
简单介绍JavaScript的变量和数据类型
2015/06/03 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
浅谈React中的元素、组件、实例和节点
2018/02/27 Javascript
vue实现a标签点击高亮方法
2018/03/17 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
Python xlwt模块使用代码实例
2020/06/10 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
2020/06/18 Python
python压包的概念及实例详解
2021/02/17 Python
CSS实现鼠标滑过鼠标点击代码写法
2016/12/26 HTML / CSS
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
管理失职检讨书
2015/05/05 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
初中思想品德教学反思
2016/02/24 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python
JavaCV实现照片马赛克效果
2022/01/22 Java/Android