首页 文章

TypeError:无法使用vue.js和axios读取未定义的属性'post'

提问于
浏览
1

我试图通过vios方法中的axios'帖子传递数据并获取错误:

“signinVue.js:60 Uncaught TypeError:无法读取未定义的属性'post'”

Vue script:

new Vue({
    el:'#app',
    data:{
        email:'',
        code:'',
    },
    methods:{
        signin:function(){
            console.log(this.email + ' ' + this.access);
            let url = '../App/testConnection.php';
            this.axios.post(url, {email:this.email, code:this.code})
                .then((response) =>{
                  console.log(response);
                })
                .catch(function (error) {
                    console.log(error);
                });
                //console.log(this.email + ' ' + this.access);
                //alert(this.email);
        }
    }
});

1 回答

  • 2

    Axios通常注册为 global 变量,因此,而不是:

    this.axios.post(url, {email:this.email, code:this.code})
    

    你应该 use

    axios.post(url, {email:this.email, code:this.code})
    

    注意 this. 已经消失了 .

    注意:如果您想通过 this.axios 真正使用Axios,则应将其添加到 Vue 原型中,如下所示:

    Vue.prototype.axios = window.axios; // this will enable this.axios inside Vue instances
    new Vue({
    // ...
    

    但这是一种不好的做法 . 如果您要像这样向Vue原型添加属性,建议的方法是使用 $_ 前缀,如:

    Vue.prototype.$axios = window.axios; // this will enable this.$axios inside Vue instances
    

    因为如果设置 Vue.prototype.axios ,它可能会与名为 axios 的某些(不太可能,是)数据属性冲突,如: data:{email:'', code:'', axios: 'w00t'}, .

相关问题