不得不说的微信小程序网络请求的问题,这个坑超级容易跳进去,按照提供的文档,90%都会进坑而不知道怎么回事,莫名其妙。我也是经过多次摸索和查阅资料发现的,在这里做个笔记,刚开始习惯跟着文档写请求,用json类型的请求头,多个页面都统一了,这些坑不得不说说。到今天想加个小功能的时候,还是被之前埋下的坑骗了。
用POST请求服务器数据进行增删改很正常的操作,在小程序安装官方的文档就是不行,查询倒是没有问题。结果就出现在请求头问题上。下面是案例(刷新请求数据更新):
onPullDownRefresh:function(){
var self=this
wx.showNavigationBarLoading()
self.setData({
fresh:"正在刷新……"
}),
wx.request({
url: 'https://lanlanlove.php', //非真实接口
method: 'POST',
data: {
token:'ca2c715ca9b60a565f41c923a74d2268',
first:first+1,
end:end+10
},
header: {
'content-type': 'application/x-www-form-urlencoded' //这是是重点啊,官方非增删改用'content-type': 'application/json'是没有问题的
},
success: function (res) {
wx.hideNavigationBarLoading()
self.setData({
articles: res.data.data,
fresh: ""
})
wx.stopPullDownRefresh(),
wx.hideNavigationBarLoading()
},
fail: function () {
console.log('服务器请求失败')
},
})
}
主要就是这里了,不改的话在服务器就无法获取到传递过来的data参数,显示undefined ……
header: {
'content-type': 'application/x-www-form-urlencoded' //这是是重点啊,官方非增删改用'content-type': 'application/json'是没有问题的
},
php后台设置跨域:
header('Access-Control-Allow-Origin: * ');//*代表全部,可以单独设置 header('Access-Control-Allow-Credentials: true'); // 设置是否允许发送 cookies header('Access-Control-Expose-Headers: *');//*代表全部 header('Access-Control-Allow-Headers: *');//*代表全部