Rails3 ajax回调有空xhr

时间:2010-09-17 22:49:10

标签: ajax ruby-on-rails-3

我在Rails3应用程序中看到了一些奇怪的行为。请注意,我使用的是rails.js

的jQuery版本

rails.js开始第49行

 error: function (xhr, status, error) {
   el.trigger('ajax:failure', [xhr, status, error]);
   alert('error in: ' + xhr.responseText ); 
 }

从我的jQuery代码到表单后执行。

 .bind('ajax:failure', function(xhr, status, error) {
    alert('error in: ' + xhr.responseText );
 })

在rails.js中的警报显示预期的返回文本,但是我的回调显示的警告:

  error in: undefined

因此,似乎没有正确地将xhr发送到回调。我做错了什么,或者这是rails.js的问题?

进一步测试表明,这适用于ajax:failureajax:success回调。通过ajax:success回调,服务器响应位于status,因此我没有注意到该行为。

1 个答案:

答案 0 :(得分:0)

来自.trigger()上的jQuery文档:

  

“事件对象始终作为传递   事件的第一个参数   处理程序,但如果有其他参数   在.trigger()调用期间指定   因为他们在这里,这些参数   将作为传递给处理程序   井“。

他们给出的例子是:

$('#foo').bind('custom', function(event, param1, param2) { alert(param1 + "\n" + param2); }); $('#foo').trigger('custom', ['Custom', 'Event']);

所以我更新了: .bind('ajax:failure', function(xhr, status, error)

于: .bind('ajax:failure', function(event, xhr, status, error)

现在工作正常。显然是我的错误