2

私は 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

4

1 に答える 1

0

のデータハッシュが$.ajaxSetup後で行う ajax 呼び出しによってオーバーライドされるため、この動作が発生すると思います。データは手動でマージする必要があります。

于 2012-06-22T13:41:11.023 に答える