微信小程序 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 相关文章推荐
Prototype使用指南之string.js
Jan 10 Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
Apr 01 Javascript
JS正则表达式比较常见用法
Jan 26 Javascript
原生js实现瀑布流布局
Mar 08 Javascript
javascript兼容性(实例讲解)
Aug 15 Javascript
React Native之TextInput组件解析示例
Aug 22 Javascript
你可能不知道的前端算法之文字避让(inMap)
Jan 12 Javascript
详解关于vue2.0工程发布上线操作步骤
Sep 27 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
May 09 Javascript
vue2 中二级路由高亮问题及配置方法
Jun 10 Javascript
解决Layui数据表格的宽高问题
Sep 28 Javascript
vue Treeselect下拉树只能选择第N级元素实现代码
Aug 31 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
解析thinkphp import 文件内容变量失效的问题
2013/06/20 PHP
在PHP程序中使用Rust扩展的方法
2015/07/03 PHP
WordPress中设置Post Type自定义文章类型的实例教程
2016/05/10 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
Jquery获取复选框被选中值的简单方法
2013/07/04 Javascript
原生javascript模仿win8等待提示圆圈进度条
2014/04/24 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
JSONP基础知识详解
2017/03/19 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
vue项目国际化vue-i18n的安装使用教程
2018/03/14 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
会话Bean的种类
2013/11/07 面试题
EJB的角色和三个对象
2015/12/31 面试题
项目合作计划书
2014/01/09 职场文书
舞蹈专业大学生职业规划范文
2014/03/12 职场文书
纠纷协议书
2014/04/16 职场文书
物资采购方案
2014/06/12 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫