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

本文介绍了一个常见的微信小程序开发陷阱:直接修改this.data而非使用setData来更新数据。通过一个具体的示例,展示了如何正确地更新页面数据,并解释了setData函数的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

出问题的场景

//出问题的代码
Page({
  data: {
    swiper: {//顶部轮播
      indicatorDots:true,
      autoplay:true,
      interval:5000,
      duration:1000,
      imgUrls:[
          "http://preview.quanjing.com/top014/top-663618.jpg",
          "http://preview.quanjing.com/top019/top-747622.jpg"
      ]
    },
    matchsFirst:[//通栏上面的赛事     这部分数据是要显示在页面上的

    ],
    matchsSecond:[//通栏的赛事 这部分数据是要显示在页面上的

    ],
    matchsLast:[//通栏下面的赛事 这部分数据是要显示在页面上的

    ]
  }
  ....省略不相干代码
  );
  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
        });

微信官方原文

Page.prototype.setData()
setData 函数用于将数据从逻辑层发送到视图层,同时改变对应的 this.data 的值。

注意:

直接修改 this.data 无效,无法改变页面的状态,还会造成数据不一致。
单次设置的数据不能超过1024kB,请尽量避免一次设置过多的数据。

微信小程序中的wx.request在与SpringMVC后台进行数据交互时,可能会遇到数据格式匹配的问题。这个问题通常是由于微信小程序默认发送的数据格式与SpringMVC框架期望的格式一致所致。SpringMVC通常期望接收'application/x-www-form-urlencoded'格式的数据,但是微信小程序wx.request默认发送的是JSON格式的数据。 参考资源链接:[微信小程序wx.request后台数据交互实战与问题解析](https://wenku.csdn.net/doc/6412b541be7fbd1778d427eb?spm=1055.2569.3001.10343) 为了解决这个问题,开发者需要在wx.request的配置对象中明确设置请求头。具体来说,需要添加一个header字段,并将'content-type'设置为'application/x-www-form-urlencoded'。这样配置后,微信小程序发送的数据就会以标准的表单数据格式传递给后端,使得SpringMVC能够正确解析。 例如,开发者可以按照以下代码修改wx.request请求: ```javascript wx.request({ url: '***', // 后端接口地址 data: e.detail.value, // 需要发送的数据 method: 'POST', header: { 'content-type': 'application/x-www-form-urlencoded' }, // 设置请求头 success: function(res) { console.log('submitsuccess'); }, fail: function(res) { console.log('submitfail'); }, complete: function(res) { console.log('submitcomplete'); } }) ``` 在这个修改后的代码示例中,通过设置了'content-type'为'application/x-www-form-urlencoded',我们可以确保数据以正确的格式发送,从而与后端框架兼容,避免数据解析错误。 在深入理解了微信小程序与SpringMVC之间数据交互的细节之后,如果需要更全面的知识,包括wx.request的更多使用技巧以及如何处理其他常见问题,可以阅读《微信小程序wx.request后台数据交互实战与问题解析》。这份资料全面解析了微信小程序后台数据交互的过程,提供了遇到常见问题的解决方案,是帮助开发者提升小程序开发能力的重要资源。 参考资源链接:[微信小程序wx.request后台数据交互实战与问题解析](https://wenku.csdn.net/doc/6412b541be7fbd1778d427eb?spm=1055.2569.3001.10343)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值