我在Rails3应用程序中看到了一些奇怪的行为。请注意,我使用的是rails.js
从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:failure
和ajax:success
回调。通过ajax:success
回调,服务器响应位于status
,因此我没有注意到该行为。
答案 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)
现在工作正常。显然是我的错误