Ajax Request使用POST使用MVC和$ .ajax调用返回HTTP错误500?
我已经看过几个关于这个的线程,我已经尝试了所有的答案( ASP.NET MVC JsonResult返回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内部服务器错误缓存控制:私有内容类型:text / html; charset = 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 GMT内容长度:17041
服务器日志不显示子状态代码。 知道我在这里做错了吗? 我更喜欢使用POST而不是GET。
表格数据显示为:
itemToUpdateId:18ac5399-342e-4a39-9da1-3281a89501df
newParentItemId:空
newPreviousItemId:空
哪个是对的。
我已经尝试将contentType设置为application / json和traditional = true,就像在这个问题中一样: 使用“application / json; charset = utf-8”向mvc发送ajaxpost会从vs web开发者服务器返回错误500
同样的错误。
好吧,我能够弄清楚问题是什么,我的AJAX语法甚至动作都没有错。 只是我返回的对象包含一个循环引用。 通过单击“网络”选项卡下的POST请求,然后查看预览选项卡,我能够在chrome控制台中看到实际错误。 这显示了实际的错误消息。
Fiddler是一个很好的捕获http请求的工具,这对调试客户端和服务器端之间的响应非常有用。 只需在浏览器中怀疑问题时打开它,当错误发生时打开fiddler并选择请求,然后查看其原始信息。
老post,另类答案……以防有人在这里结束..
我的问题是由于我正在调用的控制器操作返回了部分视图操作结果而PartialView .cshtml
文件未发布到服务器上(在发布时未包含在Visual Studio项目中)。
如果您不需要updatedItem成功,那么不要返回它只返回一个简单的变量