Javascript 如何使用MySQL登录ReactJS、NodeJS?
我是ReactJS的初学者,我想使用ReactJS、NodeJS和MySQL登录我的表单 我的班级登录名如下:Javascript 如何使用MySQL登录ReactJS、NodeJS?,javascript,mysql,node.js,reactjs,axios,Javascript,Mysql,Node.js,Reactjs,Axios,我是ReactJS的初学者,我想使用ReactJS、NodeJS和MySQL登录我的表单 我的班级登录名如下: handleClick(event){ var self = this; var payload={ "username":this.state.username, "password":this.state.password } axios({ method: 'post',
handleClick(event){
var self = this;
var payload={
"username":this.state.username,
"password":this.state.password
}
axios({
method: 'post',
url: '/app/login/',
data: payload,
withCredentials: true,
headers: {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
'Accept': 'application/json',
}
})
.then(function (response) {
console.log(response);
if(response.data.code == 200){
this.props.history.push("http://localhost:5000/brillo#/");
}
else{
swal("Erreur !", "Erreur !", "error");
}
})
.catch(function (error) {
console.log(error);
});
}
handleredirect(){
this.props.history.push("/register");
}
render() {
return (
<div className="app flex-row align-items-center">
<Form method="POST" >
<InputGroup className="mb-3">
<Input type="text" placeholder="Username" autoComplete="username" value={this.state.username} onChange={e => this.setState({ username: e.target.value })} required/>
</InputGroup>
<InputGroup className="mb-4">
<Input type="password" value={this.state.password} placeholder="Password" onChange={e => this.setState({password: e.target.value })} autoComplete="current-password" required/>
</InputGroup>
<Row>
<Col xs="6">
<Button type="button" color="primary" className="px-4" onClick={(event) => this.handleClick(event)}>Login</Button>
</Col>
<Col xs="6" className="text-right">
<Button color="link" className="px-0">Forgot password?</Button>
</Col>
</Row>
</Form>
</div>
);
}
}
export default Login;
当我通过发布<代码>http://localhost:4000/app/login/我得到:
{
"code": 204,
"success": "Email does not exits"
}
但我在注册表格上发布了我提交的用户名和密码,当我运行前端时,我得到:
{data: {…}, status: 200, statusText: "OK", headers: {…}, config: {…}, …}
config:
{
data:
code:204
success:"Email does not exits"
我想当我点击登录按钮时,它会被重定向到仪表板页面
我如何解决它?您的nodejs路由器似乎不正确,您从正文中获取电子邮件、密码、用户名,但电子邮件不是通过react发送的。那么您在数据库、电子邮件或用户名中查找什么 下一个
connection.query('SELECT * FROM users WHERE username = ?',[username], function...
我认为应该更像:
connection.query('SELECT * FROM users WHERE username = \'' + username + '\'', function...
顺便说一下,您的回答不正确:您应该返回:
return res.status(500).json({ failed: 'error ocurred'})
而不是
res.send({"code":400,"failed":"error ocurred"})
当我更改它时,我得到:
{“failed”:“error ocurred”}
打印失败的json响应中的错误以帮助您。返回res.status(500).json({failed:'error ocurred:'+error}),并且对于每个res.send,您应该转换为正确的res.status(XXX).json(json.OBJ),并在我获得:xhr.js:178 POST之前添加一个返回(但这不是您当前的问题)http://localhost:5000/app/login/ 500(内部服务器错误)DispatchXhreQuest@xhr.js:178 xhrAdapter@xhr.js:12 dispatchRequest@dispatchRequest.js:59 Promise.then(异步)request@Axios.js:51 Login.js:51错误:请求失败,状态代码为500,位于createError(createError.js:16),位于settle(settle.js:18),位于XMLHttpRequest.handleLoad(xhr.js:77)
res.send({"code":400,"failed":"error ocurred"})