我有一个JavaScript / jQuery函数,用于执行AJAX请求,这是ASP.NET Core Razor Pages(Visual C#)项目的一部分。 AJAX请求在被调用的任何页面的PageModel(.cshtml.cs)中都调用“ OnGet”处理程序方法。 AJAX请求JS / jQuery:
function conditionalDropDown(parameters) {
//code to get handler method inputs in correct format
var pathname = window.location.pathname;
var handler = "?handler=ConditionalDropDown";
var actionpath = pathname + handler;
$.ajax({
dataType: 'json',
url: actionpath,
type: 'GET',
data: {
parameterName: parameterValue
},
beforeSend: function (xhr) {
xhr.setRequestHeader("XSRF-TOKEN",
$('input:hidden[name="__RequestVerificationToken"]').val());
},
success: function (data) {
//dealing with the data returned by the request
},
error: function () {
alert("AJAX Request Failed, Contact Support");
}
});
}
PageModel中的处理程序方法
public JsonResult OnGetConditionalDropDown(parameters)
{
//call a function to get the return string
return new JsonResult(dropdownHTML);
}
我想更改我的AJAX请求,以便它改用“ OnPost”处理程序方法。我尝试在AJAX请求函数中将type: 'GET'
更改为type: 'POST'
,并将处理程序方法的名称从OnGetConditionalDropDown
更改为OnPostConditionalDropDown
,但请求始终失败。
我将@Html.AntiForgeryToken()
添加到了发送AJAX请求的页面(.cshtml),但是我不确定它的位置正确。目前,我将其放在调用AJAX请求的表单的<form>
标记中。
我认为我在设置请求的方式上缺少了一些东西,但我不知道它是什么。任何帮助将不胜感激。