ajaxSetup不使用Rails / jquery-ujs

时间:2012-05-12 22:06:34

标签: ruby-on-rails ajax jquery ujs

我正在开发一个大量使用XHR的项目,并且需要将一些数据附加到每个ajax请求,以便服务器端正确跟踪浏览器中发生的情况。

我有一个名为xhr_response_handler的泛型类,比我用来处理所有ajax请求的回调,这些请求被添加到正在发出ajax请求的所有表单,链接等。 (即rails中的“: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 %>
    }
});

这适用于使用jquery直接配置ajax设置的某些元素,但这对使用rails_to和form_for等rails方法创建的某些元素不起作用:remote =&gt;真。

奇怪的是,如果我也添加

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

然后用于向rails添加数据使用link_to生成ajax请求。令人感到奇怪的是,现在突然间ajaxSettings也能正常工作,而在ajax请求中,我得到了Foo和Foo2作为参数。但是当我自己使用ajaxSettings时,我根本没有参数。

此外,没有任何要附加的数据被序列化为从rails form_for方法生成的ajax请求中发送的表单数据。

任何帮助都将不胜感激。

Rails 3.2.3

Ruby 1.9.3p194

jQuery 1.7.2

1 个答案:

答案 0 :(得分:0)

我认为会出现此行为,因为$.ajaxSetup的数据哈希会被稍后执行的ajax调用覆盖。数据必须手动合并。