JQuery和rails3ajax:失败回调

JQuery和rails3ajax:失败回调,jquery,ajax,events,callback,ruby-on-rails-3,Jquery,Ajax,Events,Callback,Ruby On Rails 3,我正在使用Rails3和jQuery1.4.2,并试图绑定到给定远程表单提交的ajax:failure回调。回调工作正常,但是,传回的xhr变量似乎以某种方式丢失了responseText属性 我的代码是这样的: _form.html.haml = form_for(object, :remote => true) do |f| = form fields and such... Javascript某处 $('form').livequery('ajax:loading', fu

我正在使用Rails3和jQuery1.4.2,并试图绑定到给定远程表单提交的ajax:failure回调。回调工作正常,但是,传回的xhr变量似乎以某种方式丢失了responseText属性

我的代码是这样的:

_form.html.haml

= form_for(object, :remote => true) do |f|
  = form fields and such...
Javascript某处

 $('form').livequery('ajax:loading', function() {
    // what to do on ajax loading
}).livequery('ajax:success', function(data, status, xhr) {

}).livequery('ajax:failure', function(xhr, status, error) {
    alert(xhr.responseText);
});
我基本上是从控制器呈现对象的错误消息,以便在此回调上显示错误通知。奇怪的是我进入了rails.js,第49-51行

error: function (xhr, status, error) {
  el.trigger('ajax:failure', [xhr, status, error]);
}
手动写入控制台responseText,它的工作方式与我预期的相同


我做错什么了吗?xhr对象将如何从rails.js更改为我的绑定?

我找到了答案,但不明白为什么会这样。因此,rails.js使用以下代码片段触发ajax:failure事件

$.ajax({
    url: url,
    data: data,
    dataType: dataType,
    type: method.toUpperCase(),
    ...
    error: function (xhr, status, error) {
        el.trigger('ajax:failure', [xhr, status, error]);
    }
});
当我参加那个活动时

$('form').livequery('ajax:failure', function(xhr, status, error) {
status变量似乎具有responseText属性,而不是我所认为的xhr

所以

吐出我的回复文本

正确的绑定应该如下所示

('form').livequery('ajax:failure', function(event, xhr, status, error) {

因为第一个变量是触发的事件。

我还了解了变量不匹配的原因。显然,由于我绑定到事件,传入的第一个变量将是抛出的实际事件,之后还传递xhr、status和error。
('form').livequery('ajax:failure', function(event, xhr, status, error) {