我似乎无法使它与最新的.NET Core 2.2 Razor一起使用。 我对URL进行了硬编码,只是为了确保它是正确的。 Ajax脚本位于部分视图中,但是我进行了测试,以将脚本移至主页,并得到相同的404结果。
$.ajax({
type: 'POST',
url: 'https://localhost:44349/Admin/Catalog/Products/Edit?handler=Filter&id=1',
success: function (data) {
alert("success");
},
error: function (xhr, textStatus, error) {
alert(xhr.statusText);
}
});
这是我的处理程序:
public IActionResult OnPostFilter(int id)
{
return new JsonResult("test");
}
我在启动时禁用了AntiForgery令牌,只是为了确保这不会引起我的问题:
services.AddMvc().AddRazorPagesOptions(o =>
{
o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
});
答案 0 :(得分:0)
404
表示网址不正确。
剃须页在发送RequestVerificationToken
请求时需要设置POST
标头:
在视图中添加@Html.AntiForgeryToken()
,然后像这样更改ajax:
$.ajax({
type: 'POST',
url: 'https://localhost:44349/Admin/Catalog/Products/Edit?handler=Filter',
contentType: 'application/x-www-form-urlencoded',
dataType:'json',
data: {
id: 1
},
headers:
{
"RequestVerificationToken": $('input:hidden[name="__RequestVerificationToken"]').val()
},
success: function (data) {
alert("success");
},
error: function (xhr, textStatus, error) {
alert(xhr.statusText);
}
});