Vue使用ajax或者axios获取数据,能获取到数据但是页面没有更新
问题:
用ajax或者axios,get数据是正常的。但是渲染数据时data一直为空
问题代码:
下面代码看起来是正常的,但是当运行的时候会报错: 这时候你运行时会发现,数据可以请求到,但是会报错TypeError: Cannot set property ‘dataList’ of undefined
data () {return {dataList:[],}
},
mounted(){this.getDataList()
},
methods:{getDataList(){//用axios获取数据axios({method:'get',url:'/api/info'}).then(function(response){console.log(response.data)this.listClass = response.data}).catch(function(error){ // 请求失败处理console.log(error);});//用ajax获取数据$.ajax({url: '/api/devices',method: 'GET',dataType: 'JSON',async:false,success: function(data) {that.listClass = data}})}
}
主要原因是:
在ajax中的this会指向ajax本身,而不再是vue实例本身 ,同理,axios的then中this也不是指向vue实例本身
解决办法:
方法1: 用ES6箭头函数,箭头方法可以和父方法共享变量 ( ES6中的 箭头函数 “=>” 内部的this是词法作用域,由上下文确定(也就是由外层调用者vue来确定) )
axios({method:'get',url:'/api/info'}).then((response) => {console.log(response.data)that.listClass = response.data}).catch((error) => { // 请求失败处理console.log(error);});
方法2: 在请求axios外面定义一下 var that=this
//用axios获取数据var that = thisaxios({method:'get',url:'/api/info'}).then(function(response){console.log(response.data)that.listClass = response.data}).catch(function(error){ // 请求失败处理console.log(error);});
拓展:
vue项目怎么引入全局的axios?
下载:
npm install axios --save
引入:
import axios from "axios"
Vue.prototype.$axios = axios
使用:
this.$axios({url: "api/login",method: "post"
})
Vue使用ajax或者axios获取数据,能获取到数据但是页面没有更新相关推荐
- vue定时ajax获取数据,vue 中使用 AJAX获取数据的方法
在VUE开发时,数据可以使用jquery和vue-resource来获取数据.在获取数据时,一定需要给一个数据初始值. 看下例: new Vue({ el:'#app', data:{data:&qu ...
- vue 后台数据列表获取图片_vue使用ajax获取后台数据进行显示的示例
实例如下所示: title #th th{ background-color: #50a9fa; color: aliceblue; font-size: large; } 添加数据 编号 名称 时间 ...
- vue 读取ajax数据,详解vue 中使用 AJAX获取数据的方法
在VUE开发时,数据可以使用jquery和vue-resource来获取数据.在获取数据时,一定需要给一个数据初始值. 看下例: new Vue({ el:'#app', data:{data:&qu ...
- (vue)在ajax获取数据时使用loading组件不起作用
问题描述: 在用ajax获取数据时 页面没有变化,想用一个loading图标在获取数据时显示,获取完成后隐藏 整个系统用到了vue框架,在执行sure方法时调用ajax函数 sure() {conso ...
- vue之猫眼json数据的获取直接用于自己的vue项目中,swiper轮播插件的坑
vue之猫眼json数据的获取直接用于自己的vue项目中 遇到问题总结: 加载不出猫眼数据,无法调用,数据被限制 猫眼电影图片的拼接及删除问题 swiper的迷幻坑** 首先来说一下第一问题 加载不出 ...
- vue使用ajax提交数据,vue使用ajax请求后台数据的方法
vue使用ajax请求后台数据的方法 发布时间:2020-10-15 16:54:41 来源:亿速云 阅读:108 作者:栢白 这篇文章主要介绍了vue使用ajax请求后台数据的方法,具有一定借鉴价值 ...
- vusjs 配合php_对照着jquery来学vue.js系列之配合thinkphp下拉获取分页数据
上篇文章介绍了vue.js如何ajax获取数据: 接着不可避免就遇到的是: 如何进行数据分页呢? 这里以thinkphp为示例讲解:其他场景性质一样: 示例项目:https://github.com/ ...
- vue 文件转换二进制_在vue中使用axios实现post方式获取二进制流下载文件(实例代码)...
需求 点击导出下载表格对应的excel文件 在 vue 项目中,使用的 axios ,后台 java 提供的 post 接口 api 实现 第一步,在 axios 请求中加入参数,表示接收的数据为二进 ...
- json模拟数据怎么用_在使用axios获取自己模拟的json数据是踩到的坑
最近在使用Vue仿写一个网易云音乐的单页面应用,当页面布局什么的写完后,然后就准备用axios获取后台数据渲染页面了,当然,我自己写的,并没有后台,所以,我就自己写json文件,然后弄proxy代理什 ...
最新文章
- Docker 安装JDK1.8
- onSaveInstanceState在系统之后可能会杀掉Activity时调用,onStop之前
- JAVA实现N皇后问题(回溯法)
- Tomcat服务器java.lang.IllegalArgumentException异常
- 【错误异常大全】:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS
- 戏(细)说Executor框架线程池任务执行全过程(上)
- excel c# 输出
- 重庆大学微型计算机基础实验,计控课程方案设计书.doc
- HALCON标定板简介
- 用python进行文本分析_用Python分析文本文件
- Air720H模块MQTT协议的AT指令流程
- c语言中输出以e为底的指数,C语言中 ln(以自然对数e为底) lg(以十为底) 以及logab(以a为底,b为真数)的相关知识...
- linux clac countif的使用
- 4 security management strategies for data center consolidation
- 【无标题】C基础 2
- 10月更新!又一波新功能上线,升级后的EasyOps®简直神了!
- java开发一个购物车实验,JAVAWEB购物车实验报告.doc
- 写给所有程序员的心声~千里马常有,但伯乐不常有
- 《软考填涂答题卡须知》
- 如何应对运营商插入的广告、被运营商劫持怎么办