【发布时间】:2023-03-16 01:27:01
【问题描述】:
我正在使用带有 .NET 框架 4.5.2 MVC 的 jquery 3.2.1。
我有一个对 mvc 控制器的 jquery ajax 调用。如果动作成功,则返回
return new HttpStatusCodeResult(200, "success message");
当它失败时,
return new HttpStatusCodeResult(400, "failure message");
这是我的 javascript 调用:
var promise = $.ajax({
method: 'POST',
url: '/Home/TestAjaxAsync',
// ...
});
promise.done(function(results) {
console.log("got success: ");
console.log(results);
});
promise.fail(function(err) {
console.log("got error: ");
console.log(err);
});
所有这些都可以在 Visual Studio IIS Express 的本地机器上完美运行,并且在本地托管时。我可以发送请求并在 statusText 属性中获取带有状态码的“成功消息”和“失败消息”。
但是当远程托管在生产服务器中时,这将停止工作。我能够成功发送请求并成功接收响应并获得 200 OK 的“成功消息”。但对于 400、401、403 或任何其他错误代码,statusText 始终为“错误”。有时,自定义消息在 responseText 中显示为带有完整 html 标记的 YSOD。
我也尝试了以下方法,但根本无法在生产服务器上运行。
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "failure message");
【问题讨论】:
-
听起来像是 友好错误消息 的服务器设置(或类似的,自定义错误可能已关闭)正在覆盖您的状态代码。检查设置。
标签: jquery ajax asp.net-mvc