微信小程序 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 相关文章推荐
十分钟打造AutoComplete自动完成效果代码
Dec 26 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
Apr 10 Javascript
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
JavaScript实现节点的删除与序号重建实例
Aug 05 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
Mar 07 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
Jan 17 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
Jan 21 Javascript
小谈angular ng deploy的实现
Apr 07 Javascript
js代码实现轮播图
May 04 Javascript
基于jQuery拖拽事件的封装
Nov 29 jQuery
js实现验证码干扰(静态)
Feb 22 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中的cookie不用刷新就生效的方法
2012/02/04 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
Yii框架视图、视图布局、视图数据块操作示例
2019/10/14 PHP
用js实现小球的自由移动代码
2013/04/22 Javascript
js字符串转成JSON
2013/11/07 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
JS实现用户注册时获取短信验证码和倒计时功能
2016/10/27 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
浅析从vue源码看观察者模式
2018/01/29 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
Android应用开发中Action bar编写的入门教程
2016/02/26 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Python数据可视化实现多种图例代码详解
2020/07/14 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
python的数学算法函数及公式用法
2020/11/18 Python
用python对oracle进行简单性能测试
2020/12/05 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
NULL是什么,它是怎么定义的
2015/05/09 面试题
大学生水文观测实习自我鉴定
2013/09/29 职场文书
表彰先进的通报
2014/01/31 职场文书
2014年学习雷锋活动总结
2014/03/01 职场文书
战略合作意向书范本
2014/04/01 职场文书
美丽心灵观后感
2015/06/01 职场文书
战马观后感
2015/06/08 职场文书
离婚协议书格式范本
2016/03/18 职场文书
Vue自定义铃声提示音组件的实现
2022/01/22 Vue.js