gpt4 book ai didi

javascript - 显示 ajax 调用错误消息的最佳方式?

转载 作者:行者123 更新时间:2023-12-03 07:58:52 25 4
gpt4 key购买 nike

我有以下问题:

我有一个文本框,我在按下回车按钮时获取文本框的值,并且我想捕获不存在名称的错误。所以我将其添加到我的模型中:

validates :name, presence: true

在我的 Controller 中,我只更改了保存成功后应该发生的情况:

def create
@role = Role.new(role_params)

respond_to do |format|
if @role.save
format.js { render :created }
else
format.json { render json: @role.errors, status: :unprocessable_entity }
end
end
end

我的 JavaScript 文件有这个函数:

$(function(){
$("body").on("keyup", "#role_name", function(e){
if ( e.which == 13 ) {
role_name = $("#role_name").val();
$.ajax({
type: "POST",
dataType: "script",
url: '/roles',
data: {role: {name: role_name} },
success: function(){
$("#role_name").val("");
$("#alert-new-role").replaceWith("<div id='alert-new-role' class='alert alert-success col-xs-10 col-xs-offset-1'><strong>role created!</strong></div>");
}
}).fail(function(){
$("#alert-new-role").replaceWith("<div id='alert-new-role' class='alert alert-danger col-xs-10 col-xs-offset-1'><strong>name can't be empty!</strong></div>");

});
}
});
})

这确实有效,但我的错误消息是硬编码的。如果我添加第二条验证规则,我无法判断到底是什么导致了错误。

Firebug 向我显示了 Controller 创建的 JSON,但不知何故我无法在 jQuery 的 .fail 函数内访问它。

我检查了所有 4 个参数,但没有一个包含我的错误消息。

我找到了几个应该如何完成的示例,但不知何故我无法重现它。

如果我可以访问 JSON,那么在 Rails 中渲染部分内容并将其传递回 .fail 函数也是一个想法。

最佳答案

这就是我使用的,应该很容易通过一系列 html 警告和 error 上的 switch 语句进行扩展,或者只是一个插入了错误值的 html 字符串:

  $.ajax({
type: "POST",
url: "page.php",
data: dataString,
success: function() {},
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
console.log(err.Message);
console.log('xhr: ');
console.log(xhr);
console.log('status: ' + status);
console.log('error: ' + error);
}
});

您可以通过错误函数中的 xhr 对象访问所需的数据,如下所示(右键单击并在新选项卡中打开图像以获得更好的外观):

enter image description here

关于javascript - 显示 ajax 调用错误消息的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34679647/

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