最近在做小程序,需要用到小程序码,自己的项目使用java后台请求微信接口,生成小程序码,存到服务器,然后返回前端图片路径
然而发现好多同学在用前端获取小程序码,我就也来试试.
其中比较恶心的是,文档中没有写明返回的结果是个什么类型,正常的是个IO流,报错的话,那就是字符串了,目前我只是遇到了这两个情况.
废话不说了....搞起
下面是大家最开始直接写的代码 ,然后发现是一堆乱码.......
wx.request({
url: '', //接口B
data: {
},
method:'POST',
header: {
'content-type': 'application/json' // 默认值
},
success: function (res) {
console.log(res.data);
}
})
有乱码说明接口调用是成功,只不过是返回的数据 ,没有正确的处理 ,下面贴上正常的代码
wx.request({
url: ', //接口B
data: {
},
method:'POST',
responseType:'arraybuffer',
header: {
'content-type': 'application/json' // 默认值
},
success: function (res) {
var base64 = wx.arrayBufferToBase64(res.data);
that.setData({
codeurl: "data:image/png;base64," + base64
})
}
})
responseType :这个参数 一般不太会注意....然后特意去翻了一遍文档.,发现默认是text,还有一个arraybuffer,二话不说,直接代码里写上responseType:'arraybuffer', arraybuffer 这东西,就是个二进制数组.然后用 wx.arrayBufferToBase64 转化成base64的数据,重新给放小程序码位置的 src 属性赋值, 大功告成.
参考了一些文档 也有社区的一些
贴一下,帮助大家理解吧
http://www.cnblogs.com/znsongshu/p/9404805.html
希望能帮助各位,也怕我自己忘了,毕竟我是写后台的,哈哈哈哈
返回的 data:ArrayBuffer {} 是空值,
不加responseType:'arraybuffer',返回的是二进制乱码呢
返回的 data:ArrayBuffer {} 是空值,你的返回是这样的嘛?
先用第一段代码 打印出来返回的data 看看是什么吧
只能测试用一下,线上用不了
是说这个只能在测试环境中成功 在线上行不通么
你调用的接口是
开头的,这个接口没法设置为请求域名,所以你校验域名的时候会报错,在线上版本不能使用
多谢多谢 又涨经验了
多谢多谢 又涨经验了