微信小程序request引起的中文小bug

说明:

request如果直接操作data,你会发现其中的中文字符串被urlencode了。

测试代码:

Page({
  data: {
    query: {
      hello: 'hello',
      nihao: '你好'
    }
  },
  testMethod: function () {
    var query = this.data.query;
    wx.request({
      url: 'https://test.com/test.php',
      data: query
    });
    console.log(this.data.query);
  }
});

当你执行testMethod,request请求之后,你会发现’你好’变成了’%e4%bd%a0%e5%a5%bd’。

原因:

1.request对’data’进行了url编码;

2.’var query = this.data.query’只是对对象进行了浅复制,导致’var query = this.data.query’也随之变更了;

解决方案:

对对象进行深复制:

testMethod: function () {
  var query = this.data.query;
  var query_clone = JSON.parse(JSON.stringify(query));
  wx.request({
    url: 'https://test.com/test.php',
    data: query_clone
  });
  console.log(this.data.query);
}