gpt4 book ai didi

JQuery 和 Rails 3 ajax :failure callback

转载 作者:行者123 更新时间:2023-12-01 00:59:20 25 4
gpt4 key购买 nike

我正在使用 Rails 3 和 JQuery 1.4.2,并尝试在给定的远程表单提交上绑定(bind)到 ajax:failure 回调。回调工作正常,但是,传回的 xhr 变量似乎以某种方式丢失了 responseText 属性。

这是我的代码:

_form.html.haml

= 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);
});

我基本上是从 Controller 渲染对象的错误消息,以便我可以在此回调上显示错误通知。奇怪的是我进入了rails.js,第49-51行

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

并手动写入控制台responseText,它按照我期望的方式工作。

我做错了什么吗? xhr 对象如何从rails.js 更改为我的绑定(bind)?

最佳答案

我找到了答案,但对为什么会这样感到困惑。因此,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]);
}
});

当我绑定(bind)到该事件时,

$('form').livequery('ajax:failure', function(xhr, status, error) {

状态变量似乎具有responseText属性,而不是我想象的xhr属性。

所以,

console.log(status.responseText)

吐出我的回复文本。

正确的绑定(bind)应该是这样的

('form').livequery('ajax:failure', function(event, xhr, status, error) {

因为第一个变量是触发的事件。

关于JQuery 和 Rails 3 ajax :failure callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3620205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com