微信小程序 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 相关文章推荐
JavaScript 在线压缩和格式化收藏
Jan 16 Javascript
初窥JQuery(一)jquery选择符 必备知识点
Nov 25 Javascript
在vs2010中调试javascript代码方法
Feb 11 Javascript
利用json获取字符出现次数的代码
Mar 22 Javascript
jquery如何根据值设置默认的选中项
Mar 17 Javascript
微信小程序request出现400的问题解决办法
May 23 Javascript
react-native ListView下拉刷新上拉加载实现代码
Aug 03 Javascript
详细介绍RxJS在Angular中的应用
Sep 23 Javascript
vue.js项目nginx部署教程
Apr 05 Javascript
微信小程序实现的自定义分享功能示例
Feb 12 Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 01 Javascript
js调用网络摄像头的方法
Dec 05 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
VOLVO车载收音机
2021/03/02 无线电
Dedecms常用函数解析
2008/02/01 PHP
php定义数组和使用示例(php数组的定义方法)
2014/03/29 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
Javascript 自定义类型方法小结
2010/03/02 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
2013/08/26 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
js仿土豆网带缩略图的焦点图片切换效果实现方法
2015/02/23 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
DeviceOne 让你一见钟情的App快速开发平台
2016/02/17 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
Yarn的安装与使用详细介绍
2016/10/25 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
layui table 参数设置方法
2018/08/14 Javascript
vue.js循环radio的实例
2019/11/07 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
python实现批量改文件名称的方法
2015/05/25 Python
python计算一个序列的平均值的方法
2015/07/11 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
2016/06/04 Python
使用python画个小猪佩奇的示例代码
2018/06/06 Python
Python logging模块用法示例
2018/08/28 Python
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
精选干货:Java精选笔试题附答案
2014/01/18 面试题
门卫工作岗位职责
2013/12/17 职场文书
汽车专业大学生职业生涯规划范文
2014/01/07 职场文书
学校捐书活动总结
2015/05/08 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
Redis keys命令的具体使用
2022/06/05 Redis