Hak*_*tık 6 javascript c# model-view-controller json bad-request
我正在研究MVC 4项目.
我有一个在Ajax Post请求完成时执行的Action.
在某些情况下,我可以确切地确定,我必须Status将Response对象的属性设置为HttpBadRequestvalue,并返回包含一些数据的JSON对象以显示给最终用户.
问题是我无法在javascript方法中收到JSON对象,我正在接收其他内容.这是因为我将Response的Status属性设置为HttpBadRequest值.
这是细节
行动
// 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()
});
}
}
Run Code Online (Sandbox Code Playgroud)
我想从这样的javascript函数中读取这个返回的JSON对象
使用Javascript
function OnDeleteFailed(data) {
debugger;
var try1 = $.parseJSON(data.responseText);
var try2 = JSON.parse(data.responseJSON);
}
Run Code Online (Sandbox Code Playgroud)
问题是JSON对象不会填充datajavascript 的变量.在调试Javascirpt代码时,我在data变量中得到以下内容
当我从Action中删除这一行时最奇怪的事情
HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
Run Code Online (Sandbox Code Playgroud)
然后我正确地收到了JSON对象,我可以按如下方式阅读它
注意:我收到了正确的JSON对象,但在其他Javascript函数中.(现在我OnDeleteSuccess在OnDeleteFailed函数上接收JSON对象,而不是函数.
所以问题是:代码有什么问题,所以如果我将"Response"对象的"StatusCode"属性设置为"BadRequest"值,JSON对象将不会在javascript函数中收到?
我搜索了很多答案(从昨天到现在),经过长时间的搜索,这对我来说是最相关的问题,但不幸的是,这个问题的解决方案对我来说根本不起作用.
更新
这里是Web.config设置一些httpErrosIIS 的文件片段.此更新用于响应有关错误原因将来自此点的建议
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/Home/PageNotFound" />
</httpErrors>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激.
在你的中Web.Config,尝试更改existingResponse为Auto:
<httpErrors errorMode="Custom" existingResponse="Auto">
Run Code Online (Sandbox Code Playgroud)
查看文档
| 归档时间: |
|
| 查看次数: |
3646 次 |
| 最近记录: |