微信小程序 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 参考教程
Dec 29 Javascript
基于jQuery的左右滚动实现代码
Dec 03 Javascript
jQuery easyui datagrid动态查询数据实例讲解
Feb 26 Javascript
Jquery跳到页面指定位置的方法
May 12 Javascript
js阻止事件追加的具体实现
Oct 15 Javascript
Vue.js组件tabs实现选项卡切换效果
Dec 01 Javascript
微信小程序 实例开发总结
Apr 26 Javascript
jQuery使用正则验证15/18身份证的方法示例
Apr 27 jQuery
react.js 父子组件数据绑定实时通讯的示例代码
Sep 25 Javascript
把vue-router和express项目部署到服务器的方法
Feb 21 Javascript
加快Vue项目的开发速度的方法
Dec 12 Javascript
node koa2 ssr项目搭建的方法步骤
Dec 11 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
Thinkphp 框架扩展之驱动扩展实例分析
2020/04/27 PHP
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
JavaScript window.location对象
2014/11/14 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
JQuery为元素添加样式的实现方法
2016/07/20 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
Angular+Bootstrap+Spring Boot实现分页功能实例代码
2017/07/21 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
Python中运行并行任务技巧
2015/02/26 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
pandas read_excel()和to_excel()函数解析
2019/09/19 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
Django在Model保存前记录日志实例
2020/05/14 Python
CSS3径向渐变之大鱼吃小鱼之孤单的大鱼
2016/04/26 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
十一个高级MySql面试题
2014/10/06 面试题
学校食堂采购员岗位职责
2013/12/05 职场文书
体育专业学生自我评价范文
2014/01/17 职场文书
《开国大典》教学反思
2014/04/19 职场文书
环境保护建议书
2014/08/26 职场文书
2014年档案室工作总结
2014/12/01 职场文书
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python
vue如何在data中引入图片的正确路径
2022/06/05 Vue.js