所以基本上我有一个登录,每当用户按下登录按钮
时发送发布数据sendLogin(e){
e.preventDefault();
fetch('/users', {
method: 'POST',
body: JSON.stringify({
email: this.email.value,
password: this.password.value
}),
}).then(function(response) {
return response
}).then(function(body) {
console.log(body);
});
}
render(){
return (
<form onSubmit={(event) => this.sendLogin(event)} class="asdf">
<input type="text" placeholder="email" ref={(input) => { this.email = input}}/>
<input type="password" placeholder="password" ref={(input) => { this.password = input }}/>
<input type="submit" placeholder="submit"/>
</form>
)
}
在我的express server.js代码中,我设置了控制台记录我们得到的数据
app.post('/users', function(req, res) {
var user = req.body;
res.end('Success');
console.log('GOT A REQUEST');
console.log(user);
})
console.log(用户)部分根本不工作,而在客户端代码中则是console.log(正文);部分也根本不起作用。关于如何解决这个问题的任何想法?
编辑:他们两人都未定义
当我更改返回响应以返回response.json时,它会给我这个错误
Uncaught (in promise) SyntaxError: Unexpected token S in JSON at position 0
Promise rejected (async)
答案 0 :(得分:1)
console.log(用户)部分根本不工作,并且在客户端中 编码console.log(正文);部分也根本不起作用。任何想法 如何解决这个问题?
这是因为执行顺序:
改变这个:
res.end('Success');
console.log('GOT A REQUEST');
console.log(user);
致:
console.log('GOT A REQUEST');
console.log(user);
res.end('Success');
Uncaught(在promise中)SyntaxError:JSON中的意外标记S. 位置0承诺被拒绝(异步)
此错误的原因是res.end('Success');
,您发送的是String
而不是JSON
,请尝试res.end({data : logged_in_user_data});
。
注意:如果您需要使用数据进行响应,请使用诸如此类的方法 res.send()和res.json()。