質問するログイン新規登録

回答編集履歴

1

追記

2017/10/30 04:58

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -2,7 +2,11 @@
2
2
  formを利用してajax通信をする場合、必ず**本来のフォームの動作をキャンセルしなければいけません。**そのためには`Event#preventDefault`を実行する必要があります。`return false`だけではイベントのバブリングがキャンセルされるだけで、動作そのものがキャンセルされるわけではありません。
3
3
  ※`<form onSubmit="return false;">`という書き方と混同されている可能性があります。こちらはreturn falseで本来の動作がキャンセルされます。
4
4
 
5
+ また、#send_commentのclickイベントをトリガーにしていますが、この場合usernameやbody内で「Enterを押して送信」した場合にajax通信でなく、formのsubmitが発生してしまうため、そもそもトリガーをformのsubmitで取るほうが良いです。
6
+ ```html
7
+ <form id="form" action="" method="post"> <!-- formにidを振る -->
8
+ ```
5
9
  ```javascript
6
- $('#send_comment').click(function(e) { // 引数としてEventのオブジェクトeを受け取る
10
+ $('#form').submit(function(e) { // formのsubmitに処理を登録する、引数としてEventのオブジェクトeを受け取る
7
11
  e.preventDefault(); // これを一行目に追加
8
12
  ```