#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;
});
}