MVC Core2错误请求中的Ajax调用

时间:2018-01-23 15:12:03

标签: ajax asp.net-core-mvc

我正在将一个网站折射到MVC Core 2.对于我的大多数Ajax调用,我一直使用.Get()简写没有问题。我有一个需要使用$ ajax()的AJAX调用,并且由于某种原因我一直收到错误的Request错误。请记住,此代码目前在aspx网站上工作(除了我重构后更改的URL)。

function get_Data() {
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "/Home/Get_Index_Values",
        data: JSON.stringify(),
        dataType: "json"
    }) //End Ajax Call
.Done({})
.fail(function(ts){
alert(ts.response);
})

我的方法目前在家庭控制器中。用简短的手.get()我一直在使用这个签名没问题:

public JsonResult Get_Index_Values()
{
 stuff here
}

这对于这个$ ajax调用没有用,所以我试过了:

      [HttpPost]
    public ActionResult Get_Index_Values()

这也行不通。 然后我尝试将ajax url修改为以下内容并匹配上面的控制器方法签名(这里有很多迭代):

"Home/Get_Index_Values"
/Home/Get_Index_Values
/Get_Index_Values
Get_Index_Values
https://localhost:44339/Home/Get_Index_Values

一切都无济于事。我可以重写这个以使用简写.get(),但我有兴趣让它工作,所以我可以看到我做错了。

1 个答案:

答案 0 :(得分:2)

发现问题。我在启动文件中添加了AutoValidateAntiforgeryTokenAttribute。因此,令牌不匹配。必须执行以下操作才能使其正常工作:

beforeSend: function (xhr) {
    xhr.setRequestHeader("XSRF-TOKEN",
        $('input:hidden[name="__RequestVerificationToken"]').val());

http://www.talkingdotnet.com/handle-ajax-requests-in-asp-net-core-razor-pages/

获取此信息