Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

jqueryでajaxなformをpostする時の注意

まぁこんなことする人がどれぐらいいるのか分かりませんが・・・。

jqueryで$(form).submit(function(e){$.ajax{}}・・・って感じでajaxでPOSTさせるコードを書きます。

ここまではごくフツーなのですが、Ajaxで何度も同じFormを送信させる場合、postした回数分だけsubmitハンドラの中のメソッドが実行されます。

なんやねんこれって思って最初はend()したら、どうもこれはイベントハンドラは関係ないようだ。CSSセレクタだけ。

うーむと思い、苦肉の策でalert($(form).submit)してみたら、function()が存在したらbind()して、なかったらtriggerするというコードが出てきた。そうか、bind/unbindだったのか。

なので、submit()のfunctionを割り当てる前に、$(form).unbind("submit")すればおk。

See Also

unbind([type], [data]) - jQuery 日本語リファレンス