微信小程序 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监测ActiveX控件是否已经安装过的代码
Sep 02 Javascript
javascript中substr,substring,slice.splice的区别说明
Nov 25 Javascript
jquery入门—数据删除与隔行变色以及图片预览
Jan 07 Javascript
jQuery中delegate与on的用法与区别示例介绍
Dec 20 Javascript
深入分析jquery解析json数据
Dec 09 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
Feb 27 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
Aug 20 Javascript
jquery attr()设置和获取属性值实例教程
Sep 25 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
Oct 10 Javascript
js鼠标跟随运动效果
Mar 11 Javascript
Vue Socket.io源码解读
Feb 07 Javascript
Node.js爬虫如何获取天气和每日问候详解
Aug 26 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 全文搜索和替换的实现代码
2008/07/29 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
php过滤表单提交的html等危险代码
2014/11/03 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
img标签中onerror用法
2009/08/13 Javascript
js取两个数组的交集|差集|并集|补集|去重示例代码
2013/08/07 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
SeaJS中use函数用法实例分析
2017/10/10 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
使用Vue组件实现一个简单弹窗效果
2018/04/23 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
Python 字典(Dictionary)操作详解
2014/03/11 Python
python基础教程之面向对象的一些概念
2014/08/29 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
Python解析多帧dicom数据详解
2020/01/13 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
2020/02/20 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
模特职业生涯规划范文
2014/02/26 职场文书
小学教师自我鉴定范文
2014/03/20 职场文书
爱国主义演讲稿
2014/05/07 职场文书
单位接收函范文
2015/01/30 职场文书
教师学习心得体会范文
2016/01/21 职场文书
解决pytorch-gpu 安装失败的记录
2021/05/24 Python
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS