Vue.js Использование API через Axios выдает ошибку: Uncaught (в обещании) Ошибка типа: не удается прочитать свойство «протокол» неопределенного

#javascript #vue.js #axios

#javascript #vue.js #axios

Вопрос:

Я попытался использовать api через Axios в VueJS. Но это выдает ошибку, когда я пытался извлечь данные. журнал консоли (res.data). Нужна ваша помощь. похоже, я что-то пропустил

Неперехваченный (в обещании) Ошибка типа: не удается прочитать свойство «протокол» неопределенного

вот код в API.Js

 import axios from 'axios';
import API from '../API';



var urlLogin = API.url.host   '/login';

var login = {
    init: function(){
        this.vueConfig();
        if(localStorage.getItem('token') != null){
            window.location.replace("./input-mobile.html");
        }
    },
    vueConfig: function(){
        var app = new Vue({
            el: '#app',
            data: {
                isSubmit: false,
                email: "email",
                password: "password",
            },
            methods: {
                submitLogin: function(){
                    this.isSubmit = true;
                    axios.post()
                    axios({
                        method: 'post',
                        url: urlLogin,
                        data: {
                            email: this.email,
                            password: this.password
                        }
                    }).then(res =>{
                        console.log(res.data);
                        this.isSubmit = false;
                        localStorage.setItem("token", res.data.access_token);
                        localStorage.setItem("name", res.data.fullname);
                        window.location.replace("./input-mobile.html");
                    }, err =>{
                        console.log(err);
                        this.isSubmit = false;
                    });
                }
            }
        });
    }
}

module.exports = login;
  

API в порядке. в сети (проверка) api браузера выдает правильный ответ. Но не удалось получить данные

Комментарии:

1. просто удалите эту строку: axios.post() в вашем submitLogin методе

2. это работает, большое вам спасибо

Ответ №1:

Вы ссылаетесь на неправильный объект в своем обратном вызове Axios. Попробуйте добавить let self = this в начале вашего submit метода, а затем в обратном вызове измените this.isSubmit на self.isSubmit .

 submitLogin: function(){
  let self = this;
  this.isSubmit = true;
  axios.post()
  axios({
     method: 'post',
     url: urlLogin,
     data: {
         email: this.email,
         password: this.password
     }
  }).then(res =>{
     console.log(res.data);
     self.isSubmit = false;
     localStorage.setItem("token", res.data.access_token);
     localStorage.setItem("name", res.data.fullname);
     window.location.replace("./input-mobile.html");
  }, err =>{
     console.log(err);
     self.isSubmit = false;
  });
}