nca*_*vig 3 ajax jquery events callback ruby-on-rails-3
我正在使用Rails 3和JQuery 1.4.2并尝试绑定到给定远程表单提交上的ajax:failure回调.回调工作正常,但是,传回的xhr变量似乎以某种方式丢失了responseText属性.
这是我的代码的样子:
_form.html.haml
= form_for(object, :remote => true) do |f|
= form fields and such...
Run Code Online (Sandbox Code Playgroud)
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);
});
Run Code Online (Sandbox Code Playgroud)
我基本上是从控制器渲染对象的错误消息,以便我可以在此回调上显示错误通知.奇怪的是我进入了rails.js,第49-51行
error: function (xhr, status, error) {
el.trigger('ajax:failure', [xhr, status, error]);
}
Run Code Online (Sandbox Code Playgroud)
并手动写入控制台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]);
}
});
Run Code Online (Sandbox Code Playgroud)
当我绑定到该事件时,
$('form').livequery('ajax:failure', function(xhr, status, error) {
Run Code Online (Sandbox Code Playgroud)
状态var似乎具有responseText属性,而不是我想到的xhr.
所以,
console.log(status.responseText)
Run Code Online (Sandbox Code Playgroud)
吐出我的回复文字.
正确的绑定应该如下所示
('form').livequery('ajax:failure', function(event, xhr, status, error) {
Run Code Online (Sandbox Code Playgroud)
由于第一个变量是被触发的事件.
| 归档时间: |
|
| 查看次数: |
3406 次 |
| 最近记录: |