Node.js 逻辑不';之后我就不工作了

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

我有一个登录端点,它会给我一个json响应。 我正在使用vue路由器进行POST,然后将令牌存储在localStorage中,但在POST之后,屏幕上会显示json:

{"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”

如果将其保留为type
submit
,则表单实际上已过帐,代码执行将停止。这也解释了为什么您会看到一个只有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>