gpt4 book ai didi

c# - Ajax 错误 - 在 ASP.NET MVC 应用程序中抛出错误

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:42 26 4
gpt4 key购买 nike

我正在编写一个 asp.net MVC 应用程序,它将补充我编写的另一个应用程序。在我的旧应用程序中,我将错误从 Controller 发送到客户端,如下所示:

return new HttpStatusCodeResult(400, "Whatever went wrong.")

然后,在我的客户端,ajax 错误看起来有点像这样:

错误:函数(jqXHR、textStatus、errorThrown){
红色警报(错误抛出);
}

这一切都很完美。无论我在 Controller 端输入什么消息,都会在客户端弹出。

现在,我尝试用这个新应用程序做同样的事情。但是,errorThrown 每次都没有任何内容。

我不知道从哪里开始寻找,因此非常感谢任何帮助或指导。

谢谢!

编辑 1

在与 Shyju 讨论了一些事情之后,似乎 HttpStatusCodeResult 没有在新应用程序的 header 中发送回消息。仍在努力解决这个问题。

编辑2

经过一些测试,我发现自定义错误消息无法通过使用 SSL 发送。为什么这是一个问题,我该如何解决?我需要使用 SSL,因为应用程序需要工作帐户身份验证。

最佳答案

当您的服务器代码从您的网络 API Controller 返回 400 错误请求响应时,您发送的消息文本将在服务器的响应中显示为

{"Message":"Whatever went wrong."}  

现在 $.ajax 将使用此响应并从中创建一个 js 对象并将其设置为 jqXHRresponseJSON 属性目的。所以你可以简单地访问它。

$.ajax({
url: 'yourApiEndpoint'
}).done(function (data) {
console.log(data);
}).fail(function (jqXHR, textStatus, errorThrown) {
if (jqXHR.responseJSON) {
alert(jqXHR.responseJSON.Message);
}
});

当您HttpStatusCodeResult从 MVC Controller 操作方法返回时,IIS 将返回 400 页面的标记。所以响应基本上是 HTML 标记。响应 header 将包含状态代码和消息,$.ajax 方法会将您从服务器发送的状态消息设置为 xhr 对象的 statusText 属性。

.fail(function (jqXHR, textStatus, errorThrown) {
if (jqXHR.statusText) {
alert(jqXHR.statusText);
}
});

关于c# - Ajax 错误 - 在 ASP.NET MVC 应用程序中抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47214095/

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