微信小程序 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 相关文章推荐
js页面跳转常用的几种方式
Nov 25 Javascript
用表格输出1-1000之间的数字实现代码(附特效)
Apr 21 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
Dec 16 Javascript
查询json的数据结构的8种方式简介
Mar 10 Javascript
JS限制文本框只能输入数字和字母方法
Feb 28 Javascript
javascript实现3D切换焦点图
Oct 16 Javascript
简单实现JavaScript弹幕效果
Aug 27 Javascript
AngularJS实现进度条功能示例
Jul 05 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
Mar 07 Javascript
灵活使用console让js调试更简单的方法步骤
Apr 23 Javascript
JavaScript实现原型封装轮播图
Dec 27 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 access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
php获取一个变量的名字的方法
2014/09/05 PHP
php实现的zip文件内容比较类
2014/09/24 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
学习ExtJS Column布局
2009/10/08 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
js实现二代身份证号码验证详解
2014/11/20 Javascript
JS实现单行文字不间断向上滚动的方法
2015/01/29 Javascript
node.js读取文件到字符串的方法
2015/06/29 Javascript
jquery仿京东侧边栏导航效果
2017/03/02 Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
2018/08/22 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
python中实现延时回调普通函数示例代码
2017/09/08 Python
python爬虫之自制英汉字典
2019/06/24 Python
关于Python 常用获取元素 Driver 总结
2019/11/24 Python
Python网络爬虫信息提取mooc代码实例
2020/03/06 Python
Python绘制全球疫情变化地图的实例代码
2020/04/20 Python
Django日志及中间件模块应用案例
2020/09/10 Python
中国汽车租赁行业头部企业:一嗨租车
2019/05/16 全球购物
总裁秘书岗位职责
2013/12/04 职场文书
大学总结自我鉴定
2014/01/18 职场文书
风险评估实施方案
2014/03/09 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
python游戏开发Pygame框架
2022/04/22 Python