【发布时间】:2017-08-10 15:41:10
【问题描述】:
我的目的是更新数据库,而不是在用户提交数据时完全重新加载用户所在的当前页面,而只是弹出一个消息框,说明成功或失败,或类似的内容。
我有以下 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);
}
如您所见,我有一些变量打算稍后用于实际做某事。但是现在,我只是想让这个 TEST 工作。问题是控制器中的动作甚至不会触发。错误警报给了我“错误请求”。
我检查了名称,所有名称都是正确的(控制器是 PostingsController.cs,方法名称是 listItemSubmitted)。我已经尝试过 URL 语法中单词前后的斜线组合。我什至尝试过使用@Url.Action 方法,它还是给了我那个字符串,所以我知道它是正确的。
我不知道还能尝试什么。有谁知道怎么回事?
【问题讨论】:
-
尝试给出完整的网址:“host/Postings/listItemSubmitted”,
-
尝试删除 [ValidateAntiForgeryToken] 属性 - 您没有将令牌与您的帖子一起发送,因此这将阻止请求工作。
标签: javascript c# ajax asp.net-mvc