2010-09-17 48 views
1

我看到一些奇怪的行为与我的Rails3应用程序。请注意,我用的rails.jsRails3 ajax回调已空xhr

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,所以我没有注意到该行为。

回答

0

从jQuery文档上.trigger()

“的事件对象总是以 传递的第一个参数的事件处理程序 ,但如果一个.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)

而且现在工作的罚款。很明显我的错误