Jquery ajax调用不会访问控制器:无法加载资源:服务器响应状态为500(内部服务器错误)
我一直无法加载资源:服务器响应状态为500(内部服务器错误),表明对我的控制器方法的调用不起作用,我不知道原因:
var user = "founder"; var clanName = "superClan"; var SuspensionDate = Date.now; $.ajax({ url: '@Url.Action("SuspendUserFromClan", "ChatMethods")', type: "POST", contentType: "application/json; charset=utf-8", data: { 'ClanName': clanName, 'UserToSuspend': userToAdd, 'DateSuspendedTill': SuspensionDate }, dataType: "json", traditional: true, success: function (data, status, xhr) { alert(data); }, error: function () { alert("An error has occured!!!"); } });
我的控制器:
public JsonResult SuspendUserFromClan(string ClanName, string UserToSuspend, DateTime DateSuspendedTill) { ... }
在执行类型时将[HttpPost]添加到控制器:来自ajax的“POST”
[HttpPost] public JsonResult SuspendUserFromClan(string ClanName, string UserToSuspend, DateTime DateSuspendedTill) { ... }
var SuspensionDate = new Date(); $('#SuspendUser').on("click", function () { $.ajax({ url: '@Url.Action("SuspendUserFromClan", "ChatMethods")', type: "POST", // contentType: "application/json; charset=utf-8", data: { 'ClanName': clanName, 'UserToSuspend': userToAdd, 'DateSuspendedTill': SuspensionDate.toUTCString() }, dataType: "json", traditional: true, success: function (data, status, xhr) { alert(data); }, error: function () { alert("An error has occured!!!"); } }); });
解决了这个问题。
该错误发生在MVC Razor引擎或其他地方。 我可以解释这个并重新创建bug。 我收到了错误:
无法加载资源:服务器响应状态为500(内部服务器 – 我的URL –
奇怪的是,在我向PartialView添加一些Razor代码之前它刚刚工作。
我之前看到的部分视图(为简洁起见省略了一些部分):
@model DataDisplay.Models.AllItems // .... @foreach (var item in Model) { @item.ID @item.UserName @item.FullPath }
我添加到Razor的简单代码似乎给了我一个错误是一个if语句,它使我的代码如下所示:
@model DataDisplay.Models.AllItems // .... @if (Model.Count > 0) { @foreach (var item in Model) { @item.ID @item.UserName @item.FullPath } }
也许您已经看到了错误的Razor代码,但请继续。
在我添加该代码之后,我立刻得到了500错误,并且我还得到了一个指示(在Chrome开发工具中)jQuery中出现错误,该错误发生在jQuery脚本中的行上,如下所示:
xhr.send((s.hasContent && s.data)|| null);
是的,我正在调用jquery.load()来加载当前页面中的partialview。 我四处搜索,发现以下SO条目引导我回答: 发布并获取相同的签名
然而,让我解决问题的答案是mohrtan 。
我将代码添加到我的控制器:
[AcceptVerbs("Get", "Post")]
然后,当我跑步时,我在建造时收到了警告:
警告11“@”字符后出现意外的“foreach”关键字。 进入代码后,您不需要使用“@”作为“foreach”等构造的前缀。 filename.cshtml 6 10 classname
请注意,这会导致500错误,但在编译时只是一个警告。
我从foreach中删除了额外的@字符,一切运行正常。
这一切似乎都是一个错误的完美风暴,导致错误的红色鲱鱼,所以我希望这有助于某人。