LoginSignup
3
2

More than 5 years have passed since last update.

formで非同期通信をした時、2回サブミットされるのは解決する方法

Last updated at Posted at 2013-01-15

ファイルを非同期通信で保存したとき、2回サブミットされる現象が起こりました。
ファイル以外を保存するときに起こるかは、未確認です。

結果として、Mixpanelが原因でした。

下記のコードで、2回サブミットされました。

form.haml
= form_for @hoge, :html => {:multipart => true}, :remote => true do |f|
  = f.file_field :file
  = f.submit '保存', :class => 'submit'

:javascript
  $(function(){
    mixpanel.track_forms('form', 'FormSave',{hoge:hoge});
  });

Mixpanelのformイベントを登録する処理が原因だったので、下記のように修正することによって、解決されました。

form.haml
= form_for @hoge, :html => {:multipart => true}, :remote => true do |f|
  = f.file_field :file
  = f.submit '保存', :class => 'submit'

:javascript
  $(function(){
    $('.submit').click(function(){
      mixpanel.track('FormSave',{hoge:hoge});
    });
  });

今回はMixnapelが原因でしたが、そのほかの原因で、formを非同期で保存した時、2回サブミットされる現象が起こることがあるみたいので、下記のリンクも参考にしてみてください。
form submitting twice with :remote => true Rails 3.2
Form submitted twice, due to :remote=>true
Rails 3 - Forms - Jquery :remote make duplicates and prompts 2x?

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2