2012-05-12 54 views
2

我正在研究一个大量使用XHR的项目,并且需要将一些数据附加到每个ajax请求以便服务器端正确保持跟踪浏览器中发生了什么。ajaxSetup不能使用Rails/jquery-ujs

我有一个称为xhr_response_handler的泛型类,比我用来处理所有添加到所有表单,链接等的Ajax请求的回调。 (即,其中“:远程=>真”在导轨)

$('.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配置的,但是这对于使用rails方法创建的某些元素(如link_to和form_for: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调用重写你做以后。数据必须手动合并。