微信小程序 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 进阶篇1 正则表达式,cookie管理,userData
Mar 14 Javascript
7个去伪存真的JavaScript面试题
Jan 07 Javascript
JS判断form内所有表单是否为空的简单实例
Sep 09 Javascript
Javascript6中字符串的四个新用法分享
Sep 11 Javascript
详解Javascript函数声明与递归调用
Oct 22 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
Dec 31 Javascript
js设置文字颜色的方法示例
Dec 30 Javascript
jQuery实现移动端Tab选项卡效果
Mar 15 Javascript
使用Fullpage插件快速开发整屏翻页的页面
Sep 13 Javascript
jQuery解析json格式数据示例
Sep 01 jQuery
JavaScript 闭包的使用场景
Sep 17 Javascript
Nuxt.js 静态资源和打包的操作
Nov 06 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文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
orm获取关联表里的属性值
2016/04/17 PHP
curl 出现错误的调试方法(必看)
2017/02/13 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
用JavaScript实现动画效果的方法
2013/07/20 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
AngularJS快速入门
2015/04/02 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
2015/11/20 Javascript
javascript+HTML5自定义元素播放焦点图动画
2016/02/21 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
vue中的面包屑导航组件实例代码
2019/07/01 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
python多重继承新算法C3介绍
2014/09/28 Python
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
解决DataFrame排序sort的问题
2018/06/07 Python
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
内勤主管岗位职责
2014/04/03 职场文书
教学改革问题查摆整改措施
2014/09/27 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
乐山大佛导游词
2015/02/02 职场文书
小学生安全教育心得体会
2016/01/15 职场文书
学习党史心得体会2016
2016/01/23 职场文书