gpt4 book ai didi

javascript - 错误请求MVC时如何返回JSON对象

转载 作者:数据小太阳 更新时间:2023-10-29 05:32:56 25 4
gpt4 key购买 nike

我正在从事 MVC 4 项目。

我有一个在 Ajax Post 请求完成时执行的 Action。

在某些我可以准确确定的情况下,我必须将 Response 对象的 Status 属性设置为 HttpBadRequest 值,并且返回包含一些要显示给最终用户的数据的 JSON 对象。

问题是我无法在 javascript 方法中接收到 JSON 对象,我收到了别的东西。这是因为我将 Response 的 Status 属性设置为 HttpBadRequest 值。

这里是详细信息

Action

// this method will executed when some Ajax Post request.
[HttpPost]
public ActionResult Delete(int id)
{
// some code here ......

// in some case we will determine an error like this
if(error)
{
HttpContext.Response.Clear();
HttpContext.Response.TrySkipIisCustomErrors = true;
HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;

return Json(new
{
Message = string.Format(format, values),
Status = messageType.ToString()
});
}
}

我想从这样的 javascript 函数中读取这个返回的 JSON 对象

Javascript

function OnDeleteFailed(data) {
debugger;
var try1 = $.parseJSON(data.responseText);
var try2 = JSON.parse(data.responseJSON);
}

问题是 JSON 对象将 NOT 填充到 javascript 的 data 变量中。在调试 Javascript 代码时,我在 data 变量中得到以下内容

enter image description here

最奇怪的是,当我从 Action 中删除这一行时

HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;

然后我正确地收到了 JSON 对象,我可以像下面这样读取它

enter image description here

注意:我收到的是正确的 JSON 对象,但在其他 Javascript 函数中。(现在我在 OnDeleteSuccess 函数中收到 JSON 对象,而不是在 OnDeleteFailed 函数中。

所以 问题 是:代码有什么问题,如果我将“Response”对象的“StatusCode”属性设置为“,那么在 javascript 函数中将不会收到 JSON 对象BadRequest”值?

我搜索了很多答案(从昨天到现在),经过长时间的搜索,这是最相关的 question对我来说,但不幸的是,这个问题的解决方案对我来说根本不起作用。

已更新

这里是 Web.config 文件的片段,它设置了 IIS 的一些 httpErrors。本次更新是为了回应错误原因会出自这一点的建议

<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/Home/PageNotFound" />
</httpErrors>
</system.webServer>

任何想法将不胜感激。

最佳答案

在您的 Web.Config 中,尝试将 existingResponse 更改为 Auto:

<httpErrors errorMode="Custom" existingResponse="Auto">

参见 Documentation

关于javascript - 错误请求MVC时如何返回JSON对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33145800/

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