首页 > 解决方案 > 尝试将 Axios 响应中的值传递给 Vue 中的数据对象显然是愚蠢的错误

问题描述

我确信这非常简单,但是我无法将 Axios 请求的响应传递给数据对象以在其他地方使用。它目前只是返回我在数据对象中设置的默认值(在本例中为 null)。请帮忙!非常感谢。

我的 Vue 代码:

var thing = new Vue({
    el: '#el',
    data: {
        message: null,
    },
    components: ...
    template: ...
    methods: {
        thing() {
            ...
        }
    },
    created() {
        axios.get('/is-logged')
        .then(response => {
            if(response.data.status == 'error') {
                this.message = response.data.message;
            }
        })
        .catch(e => {
            console.log(e);
        });
    },

    mounted() {
        if (!this.message) {
            console.log(this.message);
            this.thing();
        }
    }
});

我从 is_logged 得到的回复:

{"message":"You are not authorised","status":"error"}

标签: vue.jsvuejs2axios

解决方案


您在 AJAX 请求完成之前记录它的值(因为该组件将mounted在您从请求中获得响应之前created)。

试着把你的回调放在console.log(this.message)最后。then


推荐阅读