我正在开发一个大量使用 XHR 的项目,并且需要将一些数据附加到每个 ajax 请求中,以便服务器端正确跟踪浏览器中发生的事情。
我有一个名为 xhr_response_handler 的通用类,它用于处理所有 ajax 请求的回调,这些请求添加到发出 ajax 请求的所有表单、链接等。(即“:remote => true”在rails中)
$('.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 方法(如 link_to 和 form_for 以及 :remote => true)创建的某些元素。
奇怪的是,如果我还添加
$('.xhr_response_handler').data( 'params', { Foo2: <%= @Bar2 %> } );
然后,这适用于使用 link_to 将数据添加到 rails 生成的 ajax 请求。奇怪的是,现在突然之间 ajaxSettings 也可以工作了,并且在 ajax 请求中我将 Foo 和 Foo2 作为参数。但是当我自己使用 ajaxSettings 时,我根本没有得到任何参数。
此外,没有任何要附加的数据被序列化为通过 rails form_for 方法生成的 ajax 请求中发送的表单数据。
任何帮助,将不胜感激。
导轨 3.2.3
红宝石 1.9.3p194
jQuery 1.7.2