gpt4 book ai didi

javascript - Rails AJAX 反馈,尤其是错误反馈

转载 作者:行者123 更新时间:2023-12-03 09:47:50 26 4
gpt4 key购买 nike

我想改进应用程序中的 AJAX 反馈(在我的模态中发布远程表单后等)。

我已经收到一些很好的反馈,显示了加载动画

$(document).ajaxStart(function(){
$('.loading-feedback').show()
})

$(document).ajaxStop(function(){
$('.loading-feedback').hide()
})

但我意识到这还不够:当我的 AJAX 请求触发 Completed 500 Internal Server Error in 1985ms 时......用户实际上什么也没发生。

例如,我想在我的前端显示一条警报消息。

我已经有一些代码可以显示我存储在 AJAX 响应中的一些 Flash 消息,我想重复使用这些消息(例如,通过显示 oops,您的 AJAX 请求触发了 #{err_code} # {err_description}。请告诉开发人员:D

我有以下代码,可以在 AJAX 请求后成功显示 Bootstrap 闪烁(在我的 Controller 中定义闪烁的内容/类型)

application_controller.rb

after_filter :ajax_flash
def ajax_flash
return unless request.xhr?

if type = priority_flash
response.headers['X-Message'] = flash[type]
response.headers['X-Message-Type'] = type.to_s

flash.discard # don't want the flash to appear when you reload page
end
end

相关 JavaScript

$(document).ajaxComplete(function(e, request, opts) { 
fireFlash(request.getResponseHeader('X-Message'), request.getResponseHeader('X-Message-Type'));
# Where fireFlash is a function that displays a bootstrap alert
});

但是现在,如果出现错误,我的 Controller 操作将返回。是否可以检测到这一点,例如填充闪光灯

flash[:fatal] = "oops, your AJAX request triggered a #{err_code} #{err_description}. Please tell the devs :D"

这会显示在我的前端吗? (请注意,我不知道在哪里可以找到 err_code 和 err_description)

最佳答案

您不需要使用 Ajax 来创建 Flash 消息。

由于 Flash 消息是非持久性的,并且在呈现时会从 session 中删除,因此您可以通过修改文档来创建新的 Flash 消息。

这是一个最小的 Flash 实现:

$(document).on('flash', function(e, key, message){
var $flash = $('<li class="alert flash js-created"></li>')
.addClass("alert-" + key)
.html(message);

$(this).find('.flashes').append($flash);
});

Turbolinks 将清理闪光灯以供使用,因为它取代了整个 <body> .

您可以使用 ajaxError 添加全局 ajax 失败处理程序而不是ajaxStop .

var $doc = $(document);
$doc.ajaxError(function(event, jqxhr, settings, thrownError){
$doc.trigger('flash', ['error', jqxhr.status + thrownError]);
});

关于javascript - Rails AJAX 反馈,尤其是错误反馈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30965902/

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