使用vue框架,ajax发送请求,渲染页面进不去

使用vue框架,ajax发送请求,渲染页面进不去

# 问题描述

使用vue框架,利用ajax发送请求,前端利用console.log可以打印出来值,但是在页面渲染时,一直渲染不进去。如下所示:
在这里插入图片描述
代码块:

<script type="text/javascript">
    var vm = new Vue({
     el: '#app',
     data:{
      tableData: [{
       id:"",
       workNumber:"123",
       name:"123",
       email:"123",
       professional:"123"
      }],
         search: ''
     },
        created:function(){
         // 查询教师基本信息
         this.query1();
        },
        methods:{
         /* 查询教师基本信息 */
        query1(){
        $.ajax({
       cache:true,
       type:"post",
       url:"teacherServlet",
       data:{"action":"query"},
       dataType:"json",
       async:false,
       error:function(req){
        alert("发送请求失败");
       },
       success:function(res){
        console.log(res);
        this.tableData = res.data;
       }
      }); 
         }
        }
    });
    
  </script>

解决

结果发现,因为ajax内容中的this并不是指向vue这个对象了,所以先保存一下this,来使用tableData

<script type="text/javascript">
    var vm = new Vue({
     el: '#app',
     data:{
      tableData: [{
       id:"",
       workNumber:"123",
       name:"123",
       email:"123",
       professional:"123"
      }],
         search: '',
     },
        created:function(){
         // 先把this保存起来
         var _self = this;
         // 查询教师基本信息
         this.query1();
          $.ajax({
         cache:true,
         type:"post",
         url:"teacherServlet",
         data:{"action":"query"},
         dataType:"json",
         async:false,
         error:function(req){
          alert("发送请求失败");
         },
         success:function(res){
          console.log(res);
          _self.tableData = res.data;
          console.log(_self.tableData[3].name);
         // window.location.href="teacherInfo.html?dataList="+res.data;
         }
        }); 
         
        },
        methods:{
         /* 查询教师基本信息 */
        query1(){
        
         }
        }
    });

渲染成功
在这里插入图片描述

存在问题

当我的query1方法放在methods里时,页面是渲染不出来,只能将ajax请求放在created中,才可以加载出来,如上所示。
测试的时候设置了同步aysnc为true,也没有用,页面同样渲染不出来。我用的this.query1(),这个this同样也是指向这个vue对象的,但是值是渲染不进去的。这一点不明白为什么。希望被指点,谢谢!
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 是一款流行的 JavaScript 框架,可以用于构建动态页面。而 Ajax 是一种使用 XMLHttpRequest 对象与服务器行异步通信的技术,可以实现无需刷新页面即可更新部分内容的效果。下面是一个使用 VueAjax 实现动态页面的简单示例: 1. 在 HTML 页面中引入 Vue 和 jQuery: ```html <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> ``` 2. 创建一个 Vue 实例: ```html <div id="app"> <h1>{{ message }}</h1> <ul> <li v-for="item in items">{{ item }}</li> </ul> </div> <script> new Vue({ el: '#app', data: { message: 'Hello Vue!', items: [] }, mounted: function () { var self = this; $.ajax({ url: '/api/items', success: function (data) { self.items = data; } }); } }); </script> ``` 在 Vue 实例的 `data` 属性中定义了一个 `message` 和一个空数组 `items`。在 `mounted` 钩子函数中使用 jQuery 发送一个 GET 请求到 `/api/items` 接口,获取数据并将其赋值给 `items`。 3. 在服务器端创建 `/api/items` 接口: ```javascript app.get('/api/items', function (req, res) { var items = ['Item 1', 'Item 2', 'Item 3']; res.json(items); }); ``` 在 Express 应用中创建一个 GET 请求处理程序,返回一个包含三个字符串的数组。 4. 运行应用并访问页面: ```bash $ node app.js ``` 在浏览器中访问 `http://localhost:3000`,就可以看到一个包含三个项目的无序列表。这个列表是通过 Ajax 从服务器获取的,并使用 Vue 渲染页面中。 以上就是一个使用 VueAjax 实现动态页面的简单示例。实际应用中,可能需要更加复杂的数据交互和页面渲染逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值