私はexpress + node jsで認証システムを実装しようとしています。これまでは良いことでしたが、今はページを更新してもフォームがサーバーに送信されることがわかりました。これは私のコードがどのように見えるかです:条件が真である場合にのみフォームを送信する方法
クライアント側:
submit(e) {
let data = this.state; /// object with user's informations
e.preventDefault()
validate.form(this.state.username, this.state.email, this.state.password, this.state.confirm) // this returns true if everything is fine or returns the error string!
}
render() {
return (<div>
<form action="/login" onSubmit = {this.submit} method="post">
<p>Username:</p>
<input type="text" onChange = {this.getData} name="username" value = {this.state.username} />
<p>Email</p>
<input type="text" onChange={this.getData} name = "email" value = {this.state.email} />
<p>Password</p>
<input type="text" onChange={this.getData} name = "password" value = {this.state.password} />
<p>Confirm Password</p>
<input type="text" onChange={this.getData} name = "confirm" value = {this.state.confirm} />
<br/> <br/>
<input type="Submit" value='Submit' /> ///this is not working!
</form>
</div>)
}
サーバー側:
app.post('/login',(req, res) => {
console.log(req.body)
res.sendFile(__dirname + '/src/index.html')
db.query('INSERT INTO users SET ?', req.body, (err, res) => console.log("done!"))
})
TL; DR私だけvalidate.form(ユーザ名場合はフォームを送信するために探しています、email、password、confirm)はtrueを返します。私はjsonを解析するモジュールとしてbodyParserを使用しています!
の 'addEventListener' – adeneo
可能な重複して適切なイベントハンドラを使用して、関数' submit'に名前を付け、またそのような形で、 'this.submit'を使用しないでくださいhttp://stackoverflow.com/questions/ 5651933/what-is-the-against-evt-preventdefault – leroydev