gpt4 book ai didi

ajax - Vue.JS 是否支持 AJAX http 调用?

转载 作者:搜寻专家 更新时间:2023-10-30 22:56:02 25 4
gpt4 key购买 nike

我正在尝试从我的 HTML 中执行以下操作:

var vm = new Vue({
el: '#loginContent',
data: {
main_message: 'Login',
isLoggedIn: false,
loginError: '',
loginButton:'Login'
},
methods: {
onLogin: function() {
//this.$set(loginSubmit, 'Logging In...');
var data = {
email: $('#email').val(),
password: $('#password').val(),
};
$.ajax({
url: '/api/login',
data: data,
method: 'POST'
}).then(function (response) {
if(response.error) {
console.err("There was an error " + response.error);
this.loginError = 'Error';
} else {
//$('#loginBlock').attr("hidden",true);
console.log(response.user);
if(response.user) {
this.isLoggedIn = true;
} else {
this.loginError = 'User not found';
}
}
}).catch(function (err) {
console.error(err);
});
}
}
});

基本上用户按下登录按钮,调用 onLogin 方法向我的 API 发送一个帖子。帖子工作正常,我确实在 .then() promise 中得到了回复。

但是,尝试执行诸如 this.isLoggedIn = true; 之类的操作时,并没有将我的 DOM 更新为我期望 HTML 在用户登录时执行的操作。

可能是因为我在某种后台线程中(抱歉,这里是移动开发人员)当我收到 promise 中的响应并且找不到“vm”实例时?

谢谢

最佳答案

这可能是因为你的 this 没有指向正确的范围,在 $.ajax 调用中 this 的范围发生了变化,所以你只需要做类似的事情以下:

  methods: {
onLogin: function() {
//this.$set(loginSubmit, 'Logging In...');
var data = {
email: $('#email').val(),
password: $('#password').val(),
};
var that = this
$.ajax({
url: '/api/login',
data: data,
method: 'POST'
}).then(function (response) {
if(response.error) {
console.err("There was an error " + response.error);
that.loginError = 'Error';
} else {
//$('#loginBlock').attr("hidden",true);
console.log(response.user);
if(response.user) {
that.isLoggedIn = true;
} else {
that.loginError = 'User not found';
}
}
}).catch(function (err) {
console.error(err);
});
}
}

关于ajax - Vue.JS 是否支持 AJAX http 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40882134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com