2012-05-12 10 views
2

私はXHRを多用するプロジェクトに取り組んでいます。サーバー側が正しく追跡するためには、各Ajaxリクエストに追加する必要のあるデータがありますブラウザで何が起こっているのかajaxSetupがRails/jquery-ujsで動作しない

私は、ajaxリクエストを作成しているすべてのフォーム、リンクなどに追加されたすべてのajaxリクエストのコールバックを処理するために使うxhr_response_handlerという汎用クラスを持っています。 (つまり、ここで「:リモート=>真の」レール内)

$('.xhr_response_handler') 
    .on('ajax:success', function(event, data, status, xhr) { xhr_success(data); }) 
    .on('ajax:failure', function(xhr, status, error) { xhr_fail(error); }); 

その後、私は、各要求が使用して送信されるデフォルトのデータを追加しよう:

$.ajaxSetup({ 
    data: { 
     Foo: <%= @Bar %> 
    } 
}); 

これは、要素のいくつかのために働きますajax設定はjqueryで直接設定されますが、link_toやform_forなどのrailsメソッドを使って作成されたいくつかの要素に対しては、remote => trueを指定しても機能しません。

奇妙なことは、私はまた

$('.xhr_response_handler').data('params', { Foo2: <%= @Bar2 %> }); 

を追加した場合、その後のlink_toを使用してAJAXリクエストを生成し、レールにデータを追加するために働くということです。それが奇妙になるのは、突然ajaxSettingsが動作し、ajaxリクエストでは、FooとFoo2の両方をパラメータとして取得するということです。しかし、ajaxSettingsを単独で使用すると、パラメータは一切取得されません。

さらに、追加するデータは、レールform_forメソッドから生成されたajaxリクエストで送信されるフォームデータにシリアル化されません。

ご協力いただければ幸いです。

のRails 3.2.3

ルビー1.9.3p194

のjQuery 1.7.2

+0

解決方法を見つけたことがありますか? –

答えて

0

私は$.ajaxSetupのデータハッシュはAJAXによって上書きされるため、この動作が表示されると思うあなたが後でやる呼び出します。データは手動でマージする必要があります。

関連する問題