小程序数据请求get传值 参数中含有数组的解决方法

小程序开发过程中,后台需求get传值,但是get传值无法在域名后面拼接数组类型参数,然而前端数据参数中含有数组类型,导致请求一直无法完成。
例如:前端请求参数如下,要求get传值给后台

// 请求数据接口(错误示范 : 参数不对请求失败报错,因为参数中含有数组,无法解析)
const params = {
	page: 1,
	limit: 20,
	isArray:[0,1,2]
}

this.request(api, params ).then(function (res) {
        if (res.errno == 0) {
          console.log(res.data.items)
        }
      });


// 请求数据接口(正确示范 : 请求成功)
// 将 isArray:[0,1,2] 写成  isArray:'0,1,2' 这种形式
const params = {
	page: 1,
	limit: 20,
	isArray:'0,1,2'
}

this.request(api, params ).then(function (res) {
        if (res.errno == 0) {
          console.log(res.data.items)
        }
      });

第二种方式请求成功是因为get传值时,参数是数组允许的格式为
?isArray=0&isArray=1&isArray=2 或者
isArray=0,1,2 所以第二种方式请求成功。

也许会有疑问参数为什么不写成以下方式:**

const params = {
	page: 1,
	limit: 20,
	isArray:0,
	isArray:1,
	isArray:2,
}

之所以不这么写是应为,在请求数据时,最后一个isArray参数会覆盖之前同名的参数值。

/**
 * 封封微信的的request
 */
function request(url, data = {}, method = "GET") {
  return new Promise(function (resolve, reject) {
    wx.request({
      url: url,
      data: data,
      method: method,
      header: {
        'Content-Type': 'application/json',
        'X-Litemall-Token': wx.getStorageSync('token')
      },
      success: function (res) {
        if (res.statusCode == 200) {
          if (res.data.errno == 501) {
            // 清除登录相关内容
            try {
              wx.removeStorageSync('userInfo');
              wx.removeStorageSync('token');
            } catch (e) {
              // Do something when catch error
            }
            // 切换到登录页面
            // wx.navigateTo({
            //   url: '/pages/auth/login/login'
            // });
          } else {
            resolve(res.data);
          }
        } else {
          reject(res.errMsg);
        }

      },
      fail: function (err) {
        console.log(err);
        reject(err)
      }
    })
  });
}
  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值