微信小程序 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实例教程(19) 使用HoTMetal(7)
Dec 23 Javascript
Js 导出table内容到Excel的简单实例
Nov 19 Javascript
JavaScript实现从数组中选出和等于固定值的n个数
Sep 03 Javascript
使用Ajax与服务器(JSON)通信实例
Nov 04 Javascript
JS匿名函数实例分析
Nov 26 Javascript
Bootstrap Table快速完美搭建后台管理系统
Sep 20 Javascript
vue2 全局变量的设置方法
Mar 09 Javascript
js实现黑白div块画空心的图形
Dec 13 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
May 10 jQuery
vue实现简单的日历效果
Sep 24 Javascript
axios 实现post请求时把对象obj数据转为formdata
Oct 31 Javascript
vue3.0生命周期的示例代码
Sep 24 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下几种删除目录的方法总结
2007/08/19 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
Ext面向对象开发实践(续)
2008/11/18 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
jQuery实现的手动拖动控制进度条效果示例【测试可用】
2018/04/18 jQuery
原生js实现五子棋游戏
2020/05/28 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
python输入错误后删除的方法
2019/10/12 Python
Django 框架模型操作入门教程
2019/11/05 Python
python实现随机加减法生成器
2020/02/24 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
keras 权重保存和权重载入方式
2020/05/21 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
详解css3 Transition属性(平滑过渡菜单栏案例)
2017/09/05 HTML / CSS
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
巴基斯坦购物网站:Goto
2019/03/11 全球购物
澳大利亚二手奢侈品网站:Modsie
2019/09/23 全球购物
技校生自我鉴定范文
2013/09/26 职场文书
孝老爱亲模范事迹
2014/01/24 职场文书
给水工程专业毕业生自荐信
2014/01/28 职场文书
培训主管岗位职责
2014/02/01 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
超市中秋节促销方案
2014/03/21 职场文书
公务员诚信承诺书
2014/05/26 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
学习焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
计划生育工作总结2015
2015/04/03 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis