javascript - 如何从 Axios 请求中获取值?

标签 javascript vue.js axios nuxt.js ecmascript-2017

我有这个代码
(注意HTML类'symbolTicket“')

<template>

  <div class="chart">

    <span class="symbolTicket">
      {{getTicket()}}
    </span>

    <div class="chartContent">

    </div>
    <!--   <div class="chartContent">  end   -->

  </div>
  <!--   <div class="chart">   end   -->

</template>

<script>
  import axios from 'axios';

export default{

  data() {
    return {
    };
  },

  methods: {

    getTicket: function () {

        return axios.get("http://localhost:2000/" , {
          params: {
            foo: 'SELECT * FROM eur_usd WHERE primary_key = 2;'
          }
        })
        .then(function (response) {
            console.log(response.data.ticket);
            return response.data.ticket;
        })
        .catch(function (error) {
          console.log(error);
        });

    },

  },

}

</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>


我需要以某种方式从查询中获取值。

enter image description here

附言当前解决方案的结果可以在屏幕上看到。
从顶部您可以看到返回的值。 (对象而不是数据)
从控制台日志的底部 - 我们看到答案本身正在运行(没有错误。)
正是这些数据需要显示在标签内。

最佳答案

执行此操作的标准方法是在模板中显示 data 属性。

<span class="symbolTicket">
  {{ ticket }}
</span>
data () {
  return {
    ticket: null
  }
}

然后从 created Hook 中加载值:

created () {
  this.getTicket()
},

methods: {
  getTicket () {
    return axios.get("http://localhost:2000/" , {
      params: {
        foo: 'SELECT * FROM eur_usd WHERE primary_key = 2;'
      }
    })
    .then(response => {
      const ticket = response.data.ticket;

      // Update the data property
      this.ticket = ticket;

      console.log(ticket);
      return ticket;
    })
    .catch(function (error) {
      console.log(error);
    });
  }
}

getTicket 方法正在向服务器发出异步请求,因此它无法直接返回 ticket。它只能返回相应的 promise 。模板同步需要值,因此依赖 getTicket 的返回值是行不通的。

您可能还需要处理 ticketnull 的情况。在初始呈现期间,对服务器的请求不会完成,因此 ticket 仍将是 null

如果您喜欢使用 async/await 可以简化 getTicket 方法,但不会改变上述的整体流程.您仍然需要一个单独的 data 属性来保存结果。

关于javascript - 如何从 Axios 请求中获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58367486/

相关文章:

javascript - 在剑道网格中使用动态下拉菜单进行内联编辑

javascript - AngularJS:选择选项更改时更新 ngModel 属性

javascript - jQuery 将脚本应用于多个选择框

javascript - ASP.NET 设置用户后,从 JavaScript JSON 请求的 Web 服务 (asmx) 获取 Windows 身份验证的 User.Identity.Name

laravel - 错误 : Uncaught (in promise) TypeError: n. swapComponent 不是函数

vue.js - 单击后,vuetify 是否默认在按钮上保持事件状态?你如何删除这个?

amazon-web-services - 使用 axios 和 aws4 向 aws 进行身份验证

javascript - VueJS - 我如何只有一个路由路径来加载具有不同 ID 的相同组件

laravel - 使用 HTTP Accept-Language header 来设置用户的区域设置是个好主意吗?

javascript - 如何从 react/redux 中的加载 Action 触发加载动画