FreeABC
记忆重叠

微信小程序 绕坑必读—完美解决 Post请求问题

1.post请求

wx.request(OBJECT)
wx.request
发起的是 HTTPS 请求。一个微信小程序,同时只能有5个网络请求连接。
官网上描述

参数名 类型 必填 说明
url String 开发者服务器接口地址
data Object、String 请求的参数
header Object 设置请求的 header , header 中不能设置 Referer
method String 默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
success Function 收到开发者服务成功返回的回调函数,res = {data: ‘开发者服务器返回的内容’}
fail Function 接口调用失败的回调函数
complete Function 接口调用结束的回调函数(调用成功、失败都会执行)

微信小程序示例

wx.request({
  url: 'test.php', //仅为示例,并非真实的接口地址
  data: {
        x: '' , 
        y: ''
   }, 
  header: { 
    'content-type': 'application/json' 
  }, 
  success: function(res) { 
    console.log(res.data) 
  }
})

这种请求GET方式是ok的,header头也可以不用添加。
但是POST就有比较大的问题了。

我使用以下代码进行调试(代码一):

//发起网络请求
                wx.request({
                  url: 'https://www.abczn.com/wechatapp/getUserToken',
                  method:'POST',
                  data:postdata,
                  success: function(ree) {
                    that.globalData.userInfo = ree.data.data;
                    wx.setStorageSync('aniuuinfo', ree.data.data);//写入用户信息到缓存
                    return ree.data.data;
                  }
                })

 

注意看下图,微信开发工具里面的提示:

wxminiapp

 
 

POST 请求会将data的值放在Request Payload里面,而不是Query String Parameters里面,后端服务器如果不注意,就无法取到数据。
网上很多改法,是这样的。—-加上header头

//发起网络请求
                wx.request({
                  url: 'https://www.abczn.com/wechatapp/getUserToken',
                  header:{'content-type':'application/x-www-form-urlencoded'},
                  method:'POST',
                  data:postdata,
                  success: function(ree) {
                    that.globalData.userInfo = ree.data.data;
                    wx.setStorageSync('aniuuinfo', ree.data.data);//写入用户信息到缓存
                    return ree.data.data;
                  }
                })

 

这样修改的话,后端可以不用特别处理。

 

欢迎大家加入我们的QQ群:307469859

未经允许不得转载:Free-Abc智能 » 微信小程序 绕坑必读—完美解决 Post请求问题
分享到: 更多 (0)