微信小程序使用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 相关文章推荐
List the Codec Files on a Computer
Jun 11 Javascript
Javascript学习笔记6 prototype的提出
Jan 11 Javascript
jQuery实现tab标签自动切换的方法
Feb 28 Javascript
详细分析JavaScript函数定义
Jul 16 Javascript
AngularJS之页面跳转Route实例代码
Mar 10 Javascript
vue.js如何将echarts封装为组件一键使用详解
Oct 10 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
Nov 11 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
angularjs 动态从后台获取下拉框的值方法
Aug 13 Javascript
mpvue网易云短信接口实现小程序短信登录的示例代码
Apr 03 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
Jul 26 Javascript
浅谈vue项目利用Hbuilder打包成APP流程,以及遇到的坑
Sep 12 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版本号
2006/10/09 PHP
实用函数9
2007/11/08 PHP
前端必学之PHP语法基础
2016/01/01 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
php使用高斯算法实现图片的模糊处理功能示例
2016/11/11 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
js 图片等比例缩放代码
2010/05/13 Javascript
js对象之JS入门之Array对象操作小结
2011/01/09 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
js 控制图片大小核心讲解
2013/10/09 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
Vue.JS项目中5个经典Vuex插件
2017/11/28 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
JS实现吸顶特效
2020/01/08 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
Python实现端口复用实例代码
2014/07/03 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
基于MTCNN/TensorFlow实现人脸检测
2018/05/24 Python
浅谈DataFrame和SparkSql取值误区
2018/06/09 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
重写django的model下的objects模型管理器方式
2020/05/15 Python
技术总监岗位职责
2013/12/05 职场文书
食品采购员岗位职责
2014/04/14 职场文书
三好学生先进事迹材料
2014/08/28 职场文书
韩语专业职业生涯规划范文:成功之路就在我们脚下
2014/09/11 职场文书
2015年安全月活动总结
2015/03/26 职场文书
python 批量压缩图片的脚本
2021/06/02 Python
MongoDB数据库之添删改查
2022/04/26 MongoDB
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers