使用OnPost页面处理程序处理Razor页面中的AJAX请求

时间:2019-03-12 10:34:05

标签: javascript jquery ajax asp.net-core razor-pages

我有一个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>标记中。

我认为我在设置请求的方式上缺少了一些东西,但我不知道它是什么。任何帮助将不胜感激。

0 个答案:

没有答案