gpt4 book ai didi

c# - 正确显示ajax error.responseText

转载 作者:行者123 更新时间:2023-11-30 12:43:49 29 4
gpt4 key购买 nike

我想在网页中显示在 ajax 请求的错误部分中我的 .NET 代码中引发的异常消息:

[HttpPost]
[AllowAnonymous]
public virtual ActionResult AuthenticateUser(string somedata)
{
throw new Exception("Ooops!!");
}

JS代码:

        jQuery(document).ready(function () {
jQuery.ajax(
'@Url.Action("AuthenticateUser")',
{
contentType: "application/json; charset=utf-8",
dataType: "json",
data: {
somedata:somedata
},
success: function (result) {
if (result == 'true') {
window.location = '@Url.Content(Request["returnUrl"])';
}
},
error: function (response) {
var responseJson = jQuery.parseJSON(response.responseText);
$('#errorMessage').text(responseJson.Message);

$('#progress_message').text("");
},
type: 'post'
}
);
});

我在“响应”中得到的错误是 HTML 代码,我想解析它以获取我从服务器端抛出的异常消息。所以,我想出的更好的方法是返回一个 Json 响应,但是尽管将“json”指定为数据类型,我仍然在“响应”中收到 HTML 代码,所以......我做错了什么?问题是我从服务器端抛出的“异常”对象吗?

最佳答案

问题是每当在 Controller 中抛出异常时,它总是会触发 asp.net 的错误页面并返回为 500 http 状态代码配置的任何内容(默认结果是“死亡黄页”,即一个 html),你正在尝试做的是自定义错误处理,并且有几种方法可以做到这一点在这个 blog 中有深入的解释。

实现此目的的一种方法是重写 OnException 方法:

protected override void OnException(ExceptionContext filterContext)
{
filterContext.Result = Json(new {Message = filterContext.Exception.Message});
filterContext.ExceptionHandled = true;
}

这会将内部服务器错误 (500) 的默认结果替换为包含错误消息的 json 结果,可以像下面这样获取

jQuery.ajax(
'@Url.Action("AuthenticateUser")',
{
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
console.log(result);
},
error: function (response) {
var responseJson = jQuery.parseJSON(response.responseText);
console.log(responseJson.Message); //Logs the exception message
},
type: 'post'
});

这将捕获 Controller 明智的错误,如果你想聪明地做这个应用程序,你将不得不更深入地了解博客的方法(可能使用“HandleError”属性)

关于c# - 正确显示ajax error.responseText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30313747/

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