【发布时间】:2012-12-06 05:02:38
【问题描述】:
我已经看过几个关于这个的帖子,我已经尝试了所有的答案 (ASP.NET MVC JsonResult return 500)
我的 ajax 请求重新返回 500 内部错误。如果我调试,我什至不会采取行动。
这是我的 ajax 调用:
$.ajax({
url: '@Url.Action("UpdateSortOrder", "FormItems")',
data: { itemToUpdateId: item.attr("id"), newParentItemId: parentItemId, newPreviousItemId: previousItemId },
type: 'POST',
success: function (data) {
console.log(data);
},
error: function (xhr, status, exception) {
console.log("Error: " + exception + ", Status: " + status);
}
});
我的行动:
[HttpPost]
public ActionResult UpdateSortOrder(Guid itemToUpdateId, Guid newParentItemId, Guid newPreviousItemId)
{
FormItem updatedItem = _formItemService.GetOne(x => x.Id == itemToUpdateId);
return Json(updatedItem, JsonRequestBehavior.DenyGet);
}
使用 chrome 控制台,这些是来自回复的响应标头:
HTTP/1.1 500 内部服务器错误 缓存控制:私有 内容类型:文本/html;字符集=utf-8 服务器:Microsoft-IIS/7.5 X-AspNetMvc-版本:3.0 X-AspNet-版本:4.0.30319 X-Powered-By: ASP.NET 日期:格林威治标准时间 2012 年 12 月 18 日星期二 21:53:41 内容长度:17041
服务器日志不显示子状态代码。知道我在这里做错了什么吗?我更喜欢使用 POST 而不是 GET。
表单数据显示为:
itemToUpdateId:18ac5399-342e-4a39-9da1-3281a89501df
newParentItemId:null
newPreviousItemId:null
哪个是正确的。
我已经尝试将 contentType 设置为 application/json 和 traditional = true 就像这个问题一样:Sending ajax post to mvc with "application/json; charset=utf-8" returns error 500 from vs web developer server
同样的错误。
【问题讨论】:
-
您是否尝试过使用 Fiddler 查看原始 POST 以了解网络中发生了什么?
-
您能分享一下您是如何设置路线的吗?
-
路线正常,现在它只是使用通过添加区域填充的默认路线规则。如果我将操作更改为返回视图并输入 URL,它将起作用,因此路由正在正确处理。
-
@BiffMaGriff 我是从 Chrome 发布的,但由于再次检查了该窗口,我现在明白了,如果我在 chrome 控制台中检查 POST 的“预览”选项卡,它给了我实际的错误,即在操作中返回的 formItem 存在循环引用错误!
标签: asp.net-mvc jquery asp.net-ajax