ASP.NET Core Razor页面中的AJAX POST不起作用。它总是返回400 Bad Request。
我有以下页面方法代码:
[ValidateAntiForgeryToken]
public async Task<IActionResult> OnPostProcessCCPaymentAsync(CheckInPaymentModel checkInPaymentModel)
{
return new JsonResult(checkInPaymentModel.AmountExtra);
}
以下内容在页面中设置:
@Html.AntiForgeryToken()
以下JS AJAX调用:
$.ajax({
type: "POST",
url: "/CheckIn/Payment?handler=ProcessCCPayment",
contentType: "application/json",
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
data: JSON.stringify({
// Those property names must match the property names of your PromotionDecision view model
Donate: true
}),
success: function (response) {
$(".paymentDetails .loading").addClass("loader").removeClass("loading");
},
failure: function (response) {
$(".paymentDetails .loading").addClass("loader").removeClass("loading");
}
});
如果Ajax类型改为GET&amp;该方法更改为OnGetProcessCCPaymentAsync,然后它正确发送到服务器。
然而,Core Razor中的AJAX POST总是因400 Bad Request而失败。
我正在直接从Visual Studio进行调试,因此URL为http://localhost:62632/CheckIn/Payment所以我不知道如何找到日志以查看调试实例收到请求时发生的错误。
非常感谢任何想法或建议。
答案 0 :(得分:1)
因此,阅读上面的修订并发表评论(这使我挠头了几分钟)没有困惑,解决方案是更改:
xhr.setRequestHeader("XSRF-TOKEN",
收件人:
xhr.setRequestHeader("RequestVerificationToken",
答案在修订本中,有人编辑了它。评论中还简要提到了它。我当然不会对此表示任何赞赏,只是想尽量减少对以后遇到这种精神错乱而犯错误的任何人的困惑。