我是MVC新手来自webforms,我正试图了解AJAX。
我想在部分视图中单击一个按钮,调用存储过程来更新计数,然后返回从存储过程返回的当前总计数。
我的Jquery看起来像这样。
function setLikeStatus(id) {
var param = {
dayId: id
};
$.ajax({
url: "/YourDay/LiveHeartClicked",
contentType: "application/x-www-form-urlencoded",
type: "POST",
datatype: "json",
data: param,
error: function (xmlHttpRequest, errorText, thrownError) {
alert(xmlHttpRequest + "," + errorText + "," + thrownError);
},
success: function (data) {
alert(data);
}
});
}
我的方法在我的控制器中看起来像这样,我不确定我是否应该在这里使用动作结果或JsonResult。我已经厌倦但都失败了。
[HttpPost]
[ValidateAntiForgeryToken]
[Authorize]
public JsonResult LiveHeartClicked(int dayId)
{
YourDayEntities3 context = new YourDayEntities3();
string userId = getUserId();
var countLikes = context.CreateDayLike(dayId, userId);
return Json(countLikes);
}
当我点击按钮时,我刚收到响应'[object Object] | error | Internal Server Error'。
任何帮助都会受到谴责。
答案 0 :(得分:1)
使用ActionResult
或JsonResult
并不重要,尽管使用更具体的JsonResult
会使您的方法更加清晰。
您收到错误,因为该方法标有[ValidateAntiForgeryToken]
且您尚未发送令牌。从方法中删除属性。此外,请删除contentType: "application/x-www-form-urlencoded",
选项。
您还应该使用url: '@Url.Action("LiveHeartClicked", "YourDay")',
来确保正确生成您的网址。