微信小程序使用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+thickbox仿校内登录注册框
Jun 07 Javascript
jQuery的animate函数学习记录
Aug 08 Javascript
JavaScript function 的 length 属性使用介绍
Sep 15 Javascript
jquery实现表单输入时提示文字滑动向上效果
Aug 10 Javascript
使用javascript插入样式
Mar 14 Javascript
jQuery如何跳转到另一个网页 就这么简单
Dec 28 Javascript
js实现功能比较全面的全选和多选
Mar 02 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
Mar 09 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
Dec 18 jQuery
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
Nov 13 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
Feb 02 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
Nov 04 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
我的论坛源代码(三)
2006/10/09 PHP
PHP爆绝对路径方法收集整理
2012/09/17 PHP
PHP单链表的实现代码
2016/07/05 PHP
利用腾讯的ip地址库做ip物理地址定位
2010/07/24 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
Ionic快速安装教程
2016/06/03 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
jQuery选择器之子元素过滤选择器
2017/09/28 jQuery
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
2019/06/12 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
Python中操作MySQL入门实例
2015/02/08 Python
python使用PyGame播放Midi和Mp3文件的方法
2015/04/24 Python
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法
2018/01/11 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
python同时遍历两个list用法说明
2020/05/02 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
python调用百度API实现人脸识别
2020/11/17 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
法国春天百货官网:Printemps.com
2020/06/29 全球购物
《雪地里的小画家》教学反思
2014/02/22 职场文书
管理失职检讨书范文
2015/05/05 职场文书
培养联系人考察意见
2015/06/01 职场文书
贷款收入证明格式
2015/06/24 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书