我的意图是在用户提交数据时,在不完全重新加载当前页面的情况下更新数据库,而只是弹出一个消息框,表示成功或失败,或类似的情况。
我有下面的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方法,它给了我这个字符串,所以我知道它是正确的。
我不知道还能尝试什么。有人知道这是怎么回事吗?
发布于 2017-08-10 15:46:42
我认为您在控制器中使用的ValidateAntiForgeryToken作为过滤器存在一个问题。您必须将相关的输入值连同您的数据发送到服务器。试着移除这个过滤器。
https://stackoverflow.com/questions/45618122
复制相似问题