微信小程序 wx.request(接口调用方式)详解及实例


Posted in Javascript onNovember 23, 2016

微信小程序 wx.request----接口调用方式

    最近开发了一个微信小程序版的任务管理系统,在向Java后台发送接口时遇到了一些问题,在这里做一个简单的总结。

官方接口

官方给出的接口叫做wx.request,请求方式比较简单,下面是官网给出的请求实例。

wx.request({
 url: 'test.php', //仅为示例,并非真实的接口地址
 data: {
   x: '' ,
   y: ''
 },
 header: {
   'content-type': 'application/json'
 },
 success: function(res) {
  console.log(res.data)
 }
})

存在的问题

wx.request请求的header中content-type默认为application/json,如果我们想换种方式比如用"application/x-www-form-urlencoded"会发现在请求头信息中并没有取代默认的application/json而是新增了这种方式,另外在用jquery.ajax请求时即便同样使用application/json方式来请求,得到的数据格式也不相同,无论用什么请求方式ajax都会将请求数据转换为&name1=value1&name2=value2的形式,这样在根据content-type来解析请求数据时就会出现问题,不知道微信是有意这样做还是它根本就是个bug。总之是给我带来了不必要的麻烦。

微信小程序发送的是https请求,在本地调试时可以用http,如果放在手机上测试时校验请求方式和域名,不合法会报以下错误:

微信小程序 wx.request(接口调用方式)详解及实例

为了方便请求,可以对wx.request做一个简单的封装,这样我们再调用的时候就方便了许多,代码如下:

var app = getApp();
function request(url,postData,doSuccess,doFail,doComplete){
   var host = getApp().conf.host;
   wx.request({
    url: host+url,
    data:postData,
    method: 'POST', 
    success: function(res){
     if(typeof doSuccess == "function"){
       doSuccess(res);
     }
    },
    fail: function() {
     if(typeof doFail == "function"){
       doFail();
     }
    },
    complete: function() {
     if(typeof doComplete == "function"){
       doComplete();
     }
    }
   });
 }
}

module.exports.request = request;

如果一个接口在不同地方频繁用到,原本设想写一个函数,然后将函数暴露供其他js调用,但后来发现wx.request中设置async是无效的,只能发异步请求,所以如果想写一个函数来返回调用接口得到的数据就比较难实现。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
javascritp实现input输入框相关限制用法
Jun 29 Javascript
JavaScript基础知识之数据类型
Aug 06 Javascript
js call方法详细介绍(js 的继承)
Nov 18 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
Jun 12 Javascript
canvas实现粒子时钟效果
Feb 06 Javascript
让div运动起来 js实现缓动效果
Jul 06 Javascript
详解vue-cli中的ESlint配置文件eslintrc.js
Sep 25 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
javaScript手机号码校验工具类PhoneUtils详解
Dec 08 Javascript
开发用到的js封装方法(20种)
Oct 12 Javascript
element-ui 实现响应式导航栏的示例代码
May 08 Javascript
深入理解 ES6中的 Reflect用法
Jul 18 Javascript
利用jquery获取select下拉框的值
Nov 23 #Javascript
JQuery和PHP结合实现动态进度条上传显示
Nov 23 #Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
Nov 23 #Javascript
JQueryEasyUI之DataGrid数据显示
Nov 23 #Javascript
详解获取jq ul第一个li定位的四种解决方案
Nov 23 #Javascript
jquery实现点击页面回到顶部
Nov 23 #Javascript
通过原生JS实现为元素添加事件的方法
Nov 23 #Javascript
You might like
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
2017/05/20 PHP
php二维码生成以及下载实现
2017/09/28 PHP
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
python闭包、深浅拷贝、垃圾回收、with语句知识点汇总
2020/03/11 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
使用django自带的user做外键的方法
2020/11/30 Python
python实现KNN近邻算法
2020/12/30 Python
animation和transition的区别
2020/10/12 HTML / CSS
html5 web本地存储将取代我们的cookie
2012/12/26 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
介绍一下Linux中的链接
2016/06/05 面试题
物流专业大学生的自我鉴定
2013/11/13 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
社会治安综合治理管理责任书
2014/04/16 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
员工离职通知函
2015/04/25 职场文书
4种方法python批量修改替换列表中元素
2022/04/07 Python