微信小程序-Cannot read property ‘setData‘ of undefined;at api request success callback function(解决)

问题: 微信小程序中提示错误:

问题源码:

onLoad: function() {
    wx.showLoading({
      title: '加载中…',
    })
    try {
        // var self = this
        wx.request({
          url: app.url+'/xxx',
          method:'post',
          data:{
            "index":"hello"
          },
          success:function(e){
            this.setData({//这一句出错了
              Total:e.data,
            })
            wx.hideLoading({})
          },
          fail:function(e){
          wx.hideLoading({
            },
          })
          }
        })
    } catch (error) {
      wx.hideLoading({})
      wx.showToast({
        title: '加载失败',
      })
    }
  },

Cannot read property ‘setData’ of undefined;at api request success callback function
在这里插入图片描述

解答:

这是因为this的作用域比较短,当进入回调函数success中的时候,this就会被消灭了。
所有会出错显示没有定义

方法

用变量定义解决
var self = this
后面使用self.xxx进行调用即可
在这里插入图片描述

修改后的代码
onLoad: function() {
    wx.showLoading({
      title: '加载中…',
    })
    try {
    	//这里使用this赋值给self
		var self = this <===1 这里修改了
        wx.request({
          url: app.url+'/xxx',
          method:'post',
          data:{
            "index":"hello"
          },
          success:function(e){
          	//这里使用self即可
            self.setData({<===2 这里修改了
              Total:e.data,
            })
            wx.hideLoading({})
          },
          fail:function(e){
          wx.hideLoading({
            },
          })
          }
        })
    } catch (error) {
      wx.hideLoading({})
      wx.showToast({
        title: '加载失败',
      })
    }
  },
  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值