微信小程序使用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 相关文章推荐
通过event对象的fromElement属性解决热区设置主实体的一个bug
Dec 22 Javascript
一个简单的jQuery插件制作 学习过程及实例
Apr 25 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
Jan 06 Javascript
jQuery Mobile 和 Kendo UI 的比较
May 05 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
Nov 18 Javascript
Angular2下使用pdf插件的方法详解
Apr 29 Javascript
详解Node.js开发中的express-session
May 19 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
Sep 05 Javascript
node.js如何根据URL返回指定的图片详解
Oct 21 Javascript
三剑客:offset、client和scroll还傻傻分不清?
Dec 04 Javascript
Vue.js中v-for指令的用法介绍
Mar 13 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
php检索或者复制远程文件的方法
2015/03/13 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
js浏览器html5表单验证
2016/10/17 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
vue-router两种模式区别及使用注意事项详解
2019/08/01 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
jquery选择器和属性对象的操作实例分析
2020/01/10 jQuery
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
[40:29]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第一场
2018/04/10 DOTA
python时间整形转标准格式的示例分享
2014/02/14 Python
python编写的最短路径算法
2015/03/25 Python
numpy自动生成数组详解
2017/12/15 Python
python在非root权限下的安装方法
2018/01/23 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
天猫国际进口超市直营:官方直采,一站购齐
2017/12/11 全球购物
文明礼仪事迹材料
2014/01/09 职场文书
社区中秋节活动方案
2014/01/29 职场文书
小学生差生评语
2014/12/29 职场文书
迎新生欢迎词
2015/01/23 职场文书