微信小程序 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 相关文章推荐
File文件控件,选中文件(图片,flash,视频)即立即预览显示
Apr 09 Javascript
基于jquery的web页面日期格式化插件
Nov 15 Javascript
jquery实现省市select下拉框的替换(示例代码)
Feb 22 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
Mar 25 Javascript
js实现用户输入的小写字母自动转大写字母的方法
Jan 21 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
Feb 14 Javascript
js简易版购物车功能
Jun 17 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
Sep 17 Javascript
bootstrap-table+treegrid实现树形表格
Jul 26 Javascript
Vue通过for循环随机生成不同的颜色或随机数的实例
Nov 09 Javascript
vue 查看dist文件里的结构(多种方式)
Jan 17 Javascript
uniapp实现可滑动选项卡
Oct 21 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的FTP学习(四)
2006/10/09 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP实现下载功能的代码
2012/09/29 PHP
深入HTTP响应状态码速查表的详解
2013/06/07 PHP
destoon之一键登录设置
2014/06/21 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
JqueryMobile动态生成listView并实现刷新的两种方法
2014/03/05 Javascript
js验证IP及子网掩码的合法性有效性示例
2014/04/30 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
JavaScript表单验证开发
2016/11/23 Javascript
如何判断出一个js对象是否一个dom对象
2016/11/24 Javascript
利用js查找数组中指定元素并返回该元素的所有索引示例
2017/03/29 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
学习使用Bootstrap栅格系统
2017/05/11 Javascript
vue 标签属性数据绑定和拼接的实现方法
2018/05/17 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
python如何查看微信消息撤回
2018/11/27 Python
tensorflow如何继续训练之前保存的模型实例
2020/01/21 Python
Python内置类型性能分析过程实例
2020/01/29 Python
使用遗传算法求二元函数的最小值
2020/02/11 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
python学生管理系统的实现
2020/04/05 Python
物流专业大学应届生求职信
2013/11/03 职场文书
会计找工作求职信范文
2013/12/09 职场文书
企业承诺书格式
2014/05/21 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
2015年挂职锻炼工作总结
2014/12/12 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
2015年科室工作总结
2015/04/10 职场文书
关于分班的感言
2015/08/04 职场文书
团委副书记工作总结
2015/08/14 职场文书