JQuery和rails3ajax:失败回调
我正在使用Rails3和jQuery1.4.2,并试图绑定到给定远程表单提交的ajax:failure回调。回调工作正常,但是,传回的xhr变量似乎以某种方式丢失了responseText属性 我的代码是这样的: _form.html.hamlJQuery和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
= 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) {