我正在尝试从Reactjs前端向Nodejs服务器(带Expressjs)发送名称和密码。当我发送名称和密码时,只发送名称。这是我的Reactjs代码:
onSubmitSignIn = () => {
console.log(this.state.signInPassword);
fetch('http://localhost:3000/signin', {
method: 'post',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: this.state.signinName,
password: this.state.signinPassword
})
})
.then(response => response.json())
.then(user => {
if(user.id){
this.props.loadUser(user);
this.props.onRouteChange('home');
}
})
}
此功能正确触发,console.log()显示密码。
这是我的Nodejs代码:
app.post('/signin', (req, res) => {
const { name, password } = req.body;
console.log("FRONT END : ", password);
console.log("BACK END: ", database[0].password);
console.log("FRONT END : ", name);
if(name == database[0].name && password == database[0].password){
res.json(database[0]);
}else{
res.status(400).json("Couldn't get user");
console.log('didnt work');
}
})
我从前端发布的名称的console.log()显示,但是我从前端发布的密码的console.log()不显示。为什么会这样?
答案 0 :(得分:2)
不知道这是否是一个拼写错误,但在控制台日志中你使用的是驼峰案例:
console.log(this.state.signInPassword);
在身体中你错过了我的大写:
password: this.state.signinPassword
答案 1 :(得分:0)
您需要更新
onSubmitSignIn = () => {
var data = new FormData();
data.append("json", JSON.stringify({
name: this.state.signinName,
password: this.state.signinPassword
}));
fetch('http://localhost:3000/signin', {
method: 'post',
headers: {'Content-Type': 'application/json'},
body: data
})
.then(response => response.json())
.then(user => {
if(user.id){
this.props.loadUser(user);
this.props.onRouteChange('home');
}
})
}