我有一个简单的操作方法,需要 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.");
}
});
我被困了最后两个多小时...我的项目中的实际场景略有不同,但我面临的问题正是这个。
您使用方法
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.");
}
});
当使用 Ajax 向控制器提交数据时,只能使用 HttpPut 或 HttpPost 注解。 在这两种情况下,在控制器端您应该使用 DTO(数据传输对象)作为参数。所以创建一个类(DTO 类),你的错误就会消失。