微信的request的post请求后台获取不到data(当初这个问题纠结了好久好久),原因是post传递的data是json格式而不是key,value的格式,所以获取不到相应的data就是post请求应为表单模式的data,微信小程序提供的datajson格式完全获取不到。
解决方法:
1.改变header
header: {
'Content-Type': 'application/json;charset=UTF-8;'
},
2.query的格式传递post请求就可以了,不过这个有点。。你懂的,我用了这种方放对request进行了二次封装,代码如下:
-
/**
-
***对微信小程序的request进行二次封装
-
***注:兼容java接口的form请求
-
**/
-
/**
-
***create by jianchep 2016/11/26
-
**/
-
var config = require('../config.js')
-
module.exports = function (obj) {
-
if (!obj.url) {
-
console.warn('请输入url接口')
-
return
-
}
-
let url = config.javaHost + obj.url + '?format=json'
-
let data = obj.data || {}
-
let formData = obj.formData || {}
-
let formDataString = ''
-
for(var key in formData){
-
formDataString += '&' + key + '=' + formData[key]
-
}
-
// console.log('formDataString--->>', formDataString)
-
if (formDataString) {
-
url += formDataString
-
}
-
console.log(url, 1231231231)
-
let requestList = {
-
url: url,
-
data: data,
-
header: {
-
'Content-Type': 'application/json'
-
},
-
success: function(res){
-
if (obj.success) {
-
obj.success(res)
-
} else {
-
let str = '\"' + obj.url + '\"接口请求成功,请用success回调函数来得到返回值'
-
console.warn(str)
-
}
-
},
-
fail: function(res) {
-
if (obj.fail) {
-
obj.fail(res)
-
} else {
-
let str = '\"' + obj.url + '\"接口请失败功,请用fail回调函数来得到返回值'
-
console.warn(str)
-
}
-
},
-
complete: function (res) {
-
if (obj.complete) {
-
obj.complete(res)
-
}
-
}
-
}
-
if (obj.method) {
-
requestList.method = obj.method.toUpperCase()
-
}
-
// console.log('api----->>', requestList)
-
wx.request(requestList)
-
}
有点鬼畜还是第一版目前还是能用的 |