JQuery Ajax 调用 ASP.NET MVC 操作方法 - “内部服务器错误?”

问题描述 投票:0回答:2

我有一个简单的操作方法,需要 2 个参数,但是当我在 Chrome 开发人员工具和“网络”选项卡 > Xhr > 请求状态代码中使用 jQuery Ajax 调用它时,出现“500 内部服务器错误”....

我试图找出实际的错误,但我找不到它?

注意:当我在actionMethod处抛出断点时&当我单击按钮时,ajax调用正在发出,但在此期间我无法获得控制权和断点,所以这意味着ajax调用没有到达操作方法也一样。

行动方法:

[HttpPost]
public ActionResult LikePost(int userId, int entryId)
{
   return Content("User Id  Is  : " + userId + "Post Id  is : " + entryId);
}

jQuery:

jQuery.ajax({
    url: "@Url.Action("LikePost", "Home")",
    method: "POST",
    data: {
       "userId": CurrentButton.attr("data-UserId"),
       "entryId": CurrentButton.attr("data-entryId")
    },
    success: function () {
       console.log("Succeded");
    },
    error: function () {
       console.log("Failed.");
   }
});

我被困了最后两个多小时...我的项目中的实际场景略有不同,但我面临的问题正是这个。

c# jquery .net asp.net-mvc
2个回答
2
投票

您使用方法

POST
,那么您只需在服务器端操作中使用一个变量。

您可以创建一个类似的类:

public class User
{
    public int UserId { get; set; }
    public int EntryId { get; set; }
}

需要更改 MVC 操作后:

[HttpPost]
public ActionResult LikePost(User user)
{
    return Content("User Id  Is  : " + user.userId + "Post Id  is : " + user.entryId);
}

并将此数据作为 JSON 发送:

var data = {
    userId: CurrentButton.attr("data-UserId"),
    entryId: CurrentButton.attr("data-entryId")
};
jQuery.ajax({
    url: "@Url.Action("LikePost", "Home")",
    method: "POST",
    data: JSON.stringify(data),
    success: function () {
       console.log("Succeded");
    },
    error: function () {
       console.log("Failed.");
   }
});

1
投票

当使用 Ajax 向控制器提交数据时,只能使用 HttpPut 或 HttpPost 注解。 在这两种情况下,在控制器端您应该使用 DTO(数据传输对象)作为参数。所以创建一个类(DTO 类),你的错误就会消失。

© www.soinside.com 2019 - 2024. All rights reserved.