Vue中ajax返回结果赋值

待我称王封你为后i 2023-06-29 05:46 49阅读 0赞

这是第二次在项目中遇到此问题,ajax请求成功后在success函数中为Vue实例data里的变量赋值,却失败了

  1. new Vue({
  2. el:'#app',
  3. data:{
  4. msg:''
  5. },
  6. created:function(){
  7. $.ajax({
  8. url:'',
  9. data:'',
  10. dataType:'json',
  11. success:function(res){
  12. this.msg = res.data;
  13. }
  14. })
  15. }
  16. })

原因在于在ajax的success函数中,this的指向不再是vue的实例,解决办法可以先把this保存起来:

  1. new Vue({
  2. el:'#app',
  3. data:{
  4. msg:''
  5. },
  6. created:function(){
  7. var that = this;
  8. $.ajax({
  9. url:'',
  10. data:'',
  11. dataType:'json',
  12. success:function(res){
  13. that.msg = res.data;
  14. }
  15. })
  16. }
  17. })

也可以将vue实例赋值给变量,再通过变量来访问其数据,实例化后window里会有vm实例对象,底层会把data里的属性挂载到vm实例对象上作为vm的属性:

  1. var vm = new Vue({
  2. el:'#app',
  3. data:{
  4. msg:''
  5. },
  6. created:function(){
  7. $.ajax({
  8. url:'',
  9. data:'',
  10. dataType:'json',
  11. success:function(res){
  12. vm.msg = res.data;
  13. }
  14. })
  15. }
  16. })

发表评论

表情:
评论列表 (有 0 条评论,49人围观)

还没有评论,来说两句吧...

相关阅读

    相关 ajax请求返回map,前端获取结果

    因业务需求,今天需要ajax请求的时候从后端返回一个map,但是问题是怎么在前端取值,这个以前遇到过,以为会比较简单,但是百度很多答案都不完整,导致没有办法借鉴。这里做下记录