私は XHR を多用するプロジェクトに取り組んでおり、サーバー側がブラウザーで何が起こっているかを適切に追跡するために、各 ajax 要求に追加する必要があるデータがいくつかあります。
ajax リクエストを作成しているすべてのフォーム、リンクなどに追加されるすべての ajax リクエストのコールバックを処理するために使用するよりも、xhr_response_handler という汎用クラスがあります。(つまり、レールの ":remote => true" の場合)
$('.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 リクエストで送信されるフォーム データに、追加されるデータがシリアル化されることはありません。
どんな助けでも大歓迎です。
レール 3.2.3
ルビー 1.9.3p194
jQuery 1.7.2