我的意图是更新数据库,而无需在用户提交数据时完全重新加载用户所在的当前页面,而只是弹出一个显示成功或失败之类的消息框。
我有以下JS函数,当用户单击按钮时会调用该函数。
function saveListItem(formID)
{
alert('JS function fired.');
var _form = $('#mainForm' + formID)
var _formData = _form.serialize();
$.ajax({
dataType: "json",
type: "POST",
url: "/Postings/listItemSubmitted",
contentType: "application/json; charset=utf-8",
data: { type: "test" },
success: function () {
alert("success");
},
error: function (xhr, status, error)
{
alert(error.toString());
}
});
}
这是控制器动作:
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult listItemSubmitted([FromBody] string type)
{
type += "!!!";
return Json(type);
}
如您所见,我有一些变量供以后实际使用。但就目前而言,我只是试图使此测试起作用。问题在于控制器中的动作甚至不会触发。错误警告提示我“错误请求”。
我检查了名称,所有名称都是正确的(控制器是PostingsController.cs,方法名称是listItemSubmitted)。我已经尝试了URL语法中单词前后的斜杠的每种组合。我什至尝试使用@ Url.Action方法,无论如何都会给我该字符串,所以我知道它是正确的。
我不知道还能尝试什么。有人知道发生了什么吗?
最佳答案
我认为您在控制器中用作过滤器的ValidateAntiForgeryToken
存在问题。您必须将相关的输入值与数据一起发送到服务器。尝试删除此过滤器。
关于javascript - ASP MVC 6 AJAX错误请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45618122/