使用wx.request()的注意点

wx.request()请求时的注意点

post请求,参数为键值对格式

    wx.request({
      url: 'http://192.168.1.103/yiji/skillList.php',
      method: 'POST',
      data:'pageSize=1&pageNum=10',    //参数为键值对字符串
      header: {
        //设置参数内容类型为x-www-form-urlencoded
        'content-type':'application/x-www-form-urlencoded',
        'Accept': 'application/json'
      },
      success: function (res) {
        console.log(res.data)
        that.setData({
          items: res.data
        })
      }

    })

POST请求,参数为json格式

可直接参考官方示例

wx.request({
  url: 'test.php', //仅为示例,并非真实的接口地址
  data: {          //参数为json格式数据
     x: '' ,
     y: '',
     z:12
  },
  header: {
      //设置参数内容类型为json
      'content-type': 'application/json'
  },
  success: function(res) {
    console.log(res.data)
  }
})

wx.request()获取响应时

Page({
  data: {
    motto: 'wzh ... '
  },
  //事件处理函数
  onLoad: function (options) {
    var that = this

    //技能资讯列表
    wx.request({
      url: 'http://192.168.1.103/yiji/skillList.php',
      method: 'POST',
      data:'pageSize=1&pageNum=10',
      header: {
        'content-type':'application/x-www-form-urlencoded',
        'Accept': 'application/json'
      },
      success: function (res) {
        console.log(res.data)
        //这样赋值现在是不能将数据传走的,必须使用setData()方法
        //that.data.items = res.data ;
        //官方文档指出必须使用setData()方法才能将数据传走
        that.setData({
          items: res.data
        })
      }

    })
  }
})

参考

  1. 微信官方原文

    Page.prototype.setData()
    setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值
    setData() 参数格式
    接受一个对象,以 key,value 的形式表示将 this.data 中的 key 对应的值改变成 value。
    其中 key 可以非常灵活,以数据路径的形式给出,如 array[2].message,a.b.c.d,并且不需要在 this.data 中预先定义。
    注意:
    直接修改 this.data 而不调用 this.setData 是无法改变页面的状态的,还会造成数据不一致
    单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

  2. 微信小程序wx.request请求回来的数据没有及时显示到页面上–网友

 onLoad: function () {
          var that = this;
      wx.request({
        url:app.globalData.url.api.home,
        success: function(res) {
            var matchsFirst = xxx;
            var matchsSecond= xxx;
            var matchsLast= xxx;
            //这样直接赋值并不会把数据渲染到页面上的    不过 0.9版本的时候这样做是可以的   
            that.data.matchsFirst=matchsFirst;
            that.data.matchsSecond=matchsSecond;
            that.data.matchsLast=matchsLast;
        }});
    };

//应该安这种方式赋值
that.setData({
          matchsFirst:matchsFirst,
          matchsSecond:matchsSecond,
          matchsLast:matchsLast
        });

你可能感兴趣的:(微信小程序踩坑)