微信小程序中wx.request传参问题,参数json格式

初用swagger文档的接口,对于一些参数说明有些不清楚,关键词如下:

1.Data type :string

2.parameter concent type:application/json

尝试1:

 1 formSubmit:function(e){
 2     console.log(typeof(this.data.idCard));               //查看当前输入身份证号的类型
 3     var idCard = JSON.stringify(this.data.idCard);       //想将字符串转成json对象
 4     console.log(typeof (this.data.idCard));              //查看是否转换成功
 5     wx.request({
 6       url: "某接口地址",
 7       method: "get",
 8       data: {
 9         "msg":this.data.idCard      
10       },
11       header: {
12         "Content-Type":"application/json;charset=UTF-8"
13       },
14       success: function (res) {
15         console.log(res);
16         },
17     })
18       },

结果报错,返回码500,上网查资料,可能有两个原因:内部服务器错误(后台测试了没有错),和我传参格式错了。果然,字符串并没有转换成功。

对于JSON.stringify正确用法应该是:

      JSON.stringify() 方法用于将 JavaScript 值(通常为对象和数组)转换为 JSON 字符串。所以字符串在此转换不了。

      那么我们换一个:JSON.parse() 方法用于将一个 JSON 字符串转换为对象。同样尝试也不行,因为这个字符串并不是json字符串。

求助同学:得把它转成一个json对象。于是我又在网上搜索了一些方法,都没成功。

其中有我在看书的时候看到的eval函数,具体方法如下:

  var json = eval('(' + str + ')');   报错eval函数不存在?(存疑)

尝试2:决定手动改json格式 

 formSubmit:function(e){
    wx.request({
      url: "http://47.104.191.228:8088/user/get/info",
      method: "get",
      data: {
        "msg":{
          "idCard": this.data.idCard,
        }
      },
      header: {
        "Content-Type":"application/json;charset=UTF-8"
      },
      success: function (res) {
        console.log(res.data);
        },
    })
      },

      成功调用接口,得到数据!除开尝试1没有加上key idCard ,这个实践告诉我json序列化中的两个函数并不能将字符串转成json格式。或许这个用法我没上手有待探索,但总归今晚还是有收获。

data type在这里还没有用到,明天再探索。

猜你喜欢

转载自www.cnblogs.com/xmjs/p/12370217.html