Jquery ajax调用不会访问控制器:加载资源失败:服务器响应状态为500(内部服务器错误)
本文关键字:服务器 状态 响应 错误 内部 失败 资源 调用 ajax 访问 加载 | 更新日期: 2023-09-27 18:11:43
我一直得到加载资源失败:服务器响应状态为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引擎或其他地方。我可以解释这一点并重新创建错误。我得到了错误:
加载资源失败:服务器响应状态为500(内部服务器--我的URL--
奇怪的是,在我向PartialView添加一些Razor代码之前,它刚刚开始工作。
我的部分视图以前看起来像(为了简洁起见,省略了一些部分(:
@model DataDisplay.Models.AllItems
// ....
@foreach (var item in Model)
{
<tr ><td>@item.ID</td><td>@item.UserName</td<td>@item.FullPath</td></tr>
}
我添加到Razor的简单代码似乎给了我一个错误,它是一个if语句,使我的代码看起来如下:
@model DataDisplay.Models.AllItems
// ....
@if (Model.Count > 0)
{
@foreach (var item in Model)
{
<tr ><td>@item.ID</td><td>@item.UserName</td<td>@item.FullPath</td></tr>
}
}
也许你已经看到了不正确的Razor代码,但请继续。
在我添加该代码后,我立即得到了500错误,我还得到了一个指示(在Chrome开发工具中(,jQuery中有一个错误,出现在jQuery脚本中的一行上,看起来像:
xhr.send((s.hasContent&&s.data(||null(
是的,我正在调用jquery.load((来加载当前页面中的部分视图。我四处搜索,发现了以下SO条目,这让我找到了答案:张贴和获取相同的签名
然而,让我找到解决方案的答案是莫赫坦的答案。
我将代码添加到我的控制器:
[AcceptVerbs("Get", "Post")]
然后,当我跑步时,我在构建时收到了警告
警告11意外";foreach";关键字在"之后@"性格一旦进入代码,就不需要为类似";foreach";用"@&";。filename.cshtml 6 10类名
请注意,这会导致500错误,但在编译时只是一个警告
我从前臂上去掉了多余的@字符,一切都很顺利。
这一切看起来像是一场错误的完美风暴,它会转移人们对错误的注意力,所以我希望这能帮助到别人。