我正在将一个网站折射到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(),但我有兴趣让它工作,所以我可以看到我做错了。
答案 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/
获取此信息