Node.js 逻辑不';之后我就不工作了
我有一个登录端点,它会给我一个json响应。 我正在使用vue路由器进行POST,然后将令牌存储在localStorage中,但在POST之后,屏幕上会显示json:Node.js 逻辑不';之后我就不工作了,node.js,vue.js,vuejs2,vue-router,Node.js,Vue.js,Vuejs2,Vue Router,我有一个登录端点,它会给我一个json响应。 我正在使用vue路由器进行POST,然后将令牌存储在localStorage中,但在POST之后,屏幕上会显示json: {"success":false,"message":"Login ou senha inválidos!"} 它应该在登录页面上返回,并显示消息 代码如下: var vmLogin = new Vue({ el: '#login', data: { email: '', msg: '', password: '' }, bef
{"success":false,"message":"Login ou senha inválidos!"}
它应该在登录页面上返回,并显示消息
代码如下:
var vmLogin = new Vue({
el: '#login',
data: {
email: '',
msg: '',
password: ''
},
beforeCreate: function () {
if(localStorage.getItem("timeTaskToken") !== null) {
window.location.href = '/'
}
},
methods: {
getLogin: function (e) {
this.$http.post('/login', {email: this.email, password: this.password}).then((response) => {
alert('teste!');
if(response.body.success === true) {
localStorage.setItem("timeTaskToken", response.body.token);
window.location.href = '/'
} else {
this.msg = response.body.message
}
}, (response) => {
// error callback
});
e.preventDefault();
}
}
});
登录页面
<form id="login" class="form-horizontal" method="post">
<h3>{{ msg }}</h3>
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10">
<input type="email" v-model="email" class="form-control" name="email" placeholder="Email">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-2 control-label">Password</label>
<div class="col-sm-10">
<input type="password" v-model="password" class="form-control" name="password" placeholder="Password">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input type="checkbox"> Remember me
</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-default" @click="getLogin">Sign
in</button>
</div>
</div>
</form>
{{msg}}
电子邮件
密码
记得我吗
签名
在里面
在之后就什么都不像了。然后就开始工作了
返回的JSON只会出现在屏幕上。只需在错误回调中添加一个console.error
}, (response) => {
console.error(response);
});
这是第一步,因为您可能只是在这里输入。我想问题是登录按钮是一个
submit
按钮,而您只希望它是一个按钮
改变
<button type="submit" class="btn btn-default" @click="getLogin">Sign in</button>
登录
到
登录
注意type=“button”
如果将其保留为typesubmit
,则表单实际上已过帐,代码执行将停止。这也解释了为什么您会看到一个只有JSON结果的页面;这只是张贴该表格的回应
或者,将e.preventDefault()
移动到方法的顶部
您也可以使用@click.prevent=“getLogin”
我们可以在#login
中查看模板吗?@Bert done!321在我看来,您需要if(response.body.message.success==true)
.console.log(response);什么也没给我…啊,所以你的警报
甚至没有触发?console.log(响应);没有给我任何东西…就像代码没有到达那里…忽略然后嗯是的,也许是个主意,只需将这个getLogin:function(e){更改为这个getLogin:(e)=>{因为你使用它时引用的不是全局范围,你可能需要绑定这个。
<button type="button" class="btn btn-default" @click="getLogin">Sign in</button>