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)
{
 ...
}

Jquery ajax调用不会访问控制器:加载资源失败:服务器响应状态为500(内部服务器错误)

在执行操作时将[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错误,但在编译时只是一个警告

我从前臂上去掉了多余的@字符,一切都很顺利。

这一切看起来像是一场错误的完美风暴,它会转移人们对错误的注意力,所以我希望这能帮助到别人。