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

时间:2018-04-22 23:40:25

标签: vue.js axios

我正在尝试通过vue方法中的axios'帖子传递数据并获取错误:

  

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

Vue脚本:

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 个答案:

答案 0 :(得分:2)

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

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

你应使用

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'},