gpt4 book ai didi

ajax - Asp.net Core 2.0 Razor 页面 Ajax Post

转载 作者:行者123 更新时间:2023-12-04 17:07:12 25 4
gpt4 key购买 nike

我试图只是jquery ajax调用以从Razor页面检索用户列表。

Users.cshtml.cs页面:

public ActionResult OnPostList(string FirstName, string LastName,string IsActive)
{
var data=(from s in _db.SecurityUser
where s.FirstName.Contains(FirstName) && s.LastName.Contains(LastName) && (IsActive=="" || (IsActive =="Y" && s.IsActive==true) || (IsActive == "N" && s.IsActive == false))
select s).OrderBy(s=>s.FirstName);
return new JsonResult(data);
}

JS通话:
$.ajax({
type: "POST",
url: "/Security/Users?handler=List",
data: JSON.stringify({
FirstName: $("#txtFirstName").val(),
LastName: $("#txtLastName").val(),
IsActive: $("#ddActive").val()
}),
contentType: "application/json",
dataType: "json",
success: function (response) {
var d = response.d;
var tblBody = $("#tblUsers > tbody");
tblBody.empty();
$.each(d, function (i, item) {
var modifiedDate = new Date(parseInt(item.ModifiedDate.substr(6)));
var $tr = $('<tr>').append(
$('<td>').html("<a href='javascript:void(0)' onclick='fnDialogShow(" + item.UserID + ")'>Edit</a>"),
$('<td>').text(item.FirstName),
$('<td>').text(item.LastName),
$('<td>').text(item.IsActive ? "Yes" : "No")
).appendTo(tblBody);

});
},
failure: function (response) {
alert(response.d);
}

});

当它调用时,我会得到一个400错误。试图弄清楚我在做什么错。

最佳答案

您的 Ajax 请求的 URL 格式是正确的。需要注意的一件事是,Razor Pages 旨在防止 (CSRF/XSRF) 攻击。因此,防伪 token 生成和验证会自动包含在 Razor Pages 中。我相信这是这里的问题。如果您的 HTML 中有表单标记,则您的页面上可能存在防伪标记。但是您需要在 Ajax 请求中传递相同的内容。

首先,使用 @Html.AntiForgeryToken() 添加防伪 token (如果不存在)。

然后,修改您的 Ajax 请求以在请求 header 中发送相同的内容。

喜欢,

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


阅读这篇文章 Handle Ajax Requests in ASP.NET Core Razor Pages 以了解有关使用 ASP.NET Core razor 页面发出 ajax 请求的更多信息。

关于ajax - Asp.net Core 2.0 Razor 页面 Ajax Post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46820771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com