Javascript 防伪令牌和Ajax JSON.stringify Post不起作用
我尝试在JSON.stringify中使用防伪令牌,我检查了很多站点,但都没有成功。这是我的ajax代码,可以毫无问题地删除一些信息。现在我添加了防伪令牌,我不知道如何更改我的ajax代码以使其正常工作。我还将ValidateAntiForgeryToken添加到我的操作中Javascript 防伪令牌和Ajax JSON.stringify Post不起作用,javascript,ajax,asp.net-mvc,json,jquery,Javascript,Ajax,Asp.net Mvc,Json,Jquery,我尝试在JSON.stringify中使用防伪令牌,我检查了很多站点,但都没有成功。这是我的ajax代码,可以毫无问题地删除一些信息。现在我添加了防伪令牌,我不知道如何更改我的ajax代码以使其正常工作。我还将ValidateAntiForgeryToken添加到我的操作中 <script src="../../Scripts/jquery-1.8.3.js"></script> <script src="../../Scripts/jquery-ui-1.9.2.
<script src="../../Scripts/jquery-1.8.3.js"></script>
<script src="../../Scripts/jquery-ui-1.9.2.custom.js"></script>
<script>
$(function () {
$(":checkbox").change(function () {
var $this = $(this);
if ($this.is(":checked")) {
$this.closest("tr").addClass("SlectedtRow");
} else {
$this.closest("tr").removeClass("SlectedtRow");
}
})
var tittle = '';
var url = '';
$("#dialog").dialog({
autoOpen: false,
width: 400,
modal: true,
resizable: false,
buttons: [
{
text: "بلی",
click: function () {
Delete();
$(this).dialog("close");
}
},
{
text: "خیر",
click: function () {
$(this).dialog("close");
}
}
]
});
var IsActive
// Link to open the dialog
$(".insertBtn").click(function (event) {
var IsSelected = false;
var ModalText = " آیا کاربر ";
$('#userForm input:checked').each(function () {
ModalText += this.value + " - "
IsSelected = true;
});
if (IsSelected) {
document.getElementById('ErrorContent').style.display = "none";
ModalText = ModalText.slice(0, -2);
if (this.id == 'DeleteUser') {
ModalText += " حذف گردد "
tittle = 'حذف کاربر'
url = '@Url.Action("DeleteUser", "UserManagement")';
}
else if (this.id == 'InActiveUser') {
ModalText += " غیر فعال گردد "
tittle = 'تغییر فعالیت کاربر '
url = '@Url.Action("ChangeActiveStatus", "UserManagement")';
IsActive = false;
}
else if (this.id == 'ActiveUser') {
ModalText += " فعال گردد "
tittle = 'تغییر فعالیت کاربر '
url = '@Url.Action("ChangeActiveStatus", "UserManagement")';
IsActive = true;
}
$('#ModalMessgae').text(ModalText);
$("#dialog").dialog("open");
$("#ui-id-1").text(tittle);
event.preventDefault();
} })
function Delete() {
var list = [];
$('#userForm input:checked').each(function () {
list.push(this.id);
});
var parameters = {};
if (url == '@Url.Action("DeleteUser", "UserManagement")') {
parameters = JSON.stringify(list);
}
else {
parameters = JSON.stringify({ "userId": list, "ISActive": IsActive });
}
$.ajax({
url: url,
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: "html",
traditional: true,
data: parameters,
success: function (data, textStatus, jqXHR) {
$('#updateAjax').html(data);
},
error: function (data) {
$('#updateAjax').html(data);
}
}); //end ajax
}
});
</script>
$(函数(){
$(“:复选框”).change(函数(){
var$this=$(this);
如果($this.is(“:checked”)){
$this.closest(“tr”).addClass(“SlectedtRow”);
}否则{
$this.closest(“tr”).removeClass(“SlectedtRow”);
}
})
var title='';
var url='';
$(“#对话框”)。对话框({
自动打开:错误,
宽度:400,
莫代尔:是的,
可调整大小:false,
按钮:[
{
文字:“بلی”,
单击:函数(){
删除();
$(此).dialog(“关闭”);
}
},
{
正文:“خیぷ”,
单击:函数(){
$(此).dialog(“关闭”);
}
}
]
});
无功
//链接以打开对话框
$(“.insertBtn”)。单击(函数(事件){
var IsSelected=假;
var ModalText=“آیا㶋㶋㶋㶕㶕”;
$('#userForm input:checked')。每个(函数(){
ModalText+=此.value+“-”
IsSelected=true;
});
如果(当选){
document.getElementById('ErrorContent').style.display=“无”;
ModalText=ModalText.slice(0,-2);
if(this.id==“DeleteUser”){
ModalText+=“حذفگدد”
标题='
url='@url.Action(“删除用户”、“用户管理”);
}
else if(this.id=='InActiveUser'){
ModalText+=“غیعالگدد”
标题='
url='@url.Action(“ChangeActiveStatus”,“UserManagement”);
IsActive=假;
}
else if(this.id==“ActiveUser”){
ModalText+=“فعالگدد”
标题='
url='@url.Action(“ChangeActiveStatus”,“UserManagement”);
IsActive=true;
}
$('ModalMessgae').text(ModalText);
$(“对话框”)。对话框(“打开”);
$(“#ui-id-1”)。文本(标题);
event.preventDefault();
} })
函数Delete(){
var列表=[];
$('#userForm input:checked')。每个(函数(){
list.push(this.id);
});
var参数={};
如果(url='@url.Action(“删除用户”、“用户管理”)){
参数=JSON.stringify(列表);
}
否则{
parameters=JSON.stringify({“userId”:list,“ISActive”:ISActive});
}
$.ajax({
url:url,
键入:“POST”,
contentType:'application/json;charset=utf-8',
数据类型:“html”,
传统的:是的,
数据:参数,
成功:函数(数据、文本状态、jqXHR){
$('#updateAjax').html(数据);
},
错误:函数(数据){
$('#updateAjax').html(数据);
}
});//结束ajax
}
});
//html
@using Common.UsersManagement.Entities;
@model IEnumerable<VwUser>
@{
Layout = "~/Views/Shared/Master.cshtml";
}
<form id="userForm">
<div id="updateAjax">
@Html.AntiForgeryToken()
@if (string.IsNullOrWhiteSpace(ViewBag.MessageResult) == false)
{
<div class="@ViewBag.cssClass">
@Html.Label(ViewBag.MessageResult as string)
</div>
<br />
}
<table class="table" cellspacing="0">
@foreach (VwUser Item in Model)
{
<tr class="@(Item.IsActive ? "tRow" : "Disable-tRow")">
<td class="tbody">
<input type="checkbox" id="@Item.Id" name="selected" value="@Item.FullName"/></td>
<td class="tbody">@Item.FullName</td>
<td class="tbody">@Item.Post</td>
<td class="tbody">@Item.Education</td>
</tr>
}
</table>
</div>
<br />
<br />
@if (!Request.IsAjaxRequest())
{
<div class="btnContainer">
<a href="#" id="DeleteUser" class="insertBtn">delete </a>
<br />
<br />
</div>}
@使用Common.UsersManagement.Entities;
@模型IEnumerable
@{
Layout=“~/Views/Shared/Master.cshtml”;
}
@Html.AntiForgeryToken()
@if(string.IsNullOrWhiteSpace(ViewBag.MessageResult)==false)
{
@Html.Label(ViewBag.MessageResult为字符串)
}
@foreach(模型中的用户项)
{
@Item.FullName
@项目.邮寄
@项目.教育
}
@如果(!Request.IsAjaxRequest())
{
}
默认情况下,AJAX POST不会检查Antiforgerytokens。您可以通过覆盖授权来启用它,如下所示:默认情况下,AJAX POST不会检查Antiforgerytokens。您可以通过覆盖授权来启用它,如下所示:这可能对某人有所帮助。您所需要做的就是在jquery和cshtml中添加以下适当的行
jquery:
var token = $('#userForm input[name="__RequestVerificationToken"]').val();
// ....
//include {__RequestVerificationToken:token} in your json result.
//For example,
JSON.stringify({ __RequestVerificationToken:token, "userId": list, "ISActive": IsActive })
cshtml:
<form id="userForm">
@Html.AntiForgeryToken()
<div id="updateAjax">
...
</div>
</form>
请阅读下面的链接
这可能会对某人有所帮助。您所需要做的就是在jquery和cshtml中添加以下适当的行 jquery:
var token = $('#userForm input[name="__RequestVerificationToken"]').val();
// ....
//include {__RequestVerificationToken:token} in your json result.
//For example,
JSON.stringify({ __RequestVerificationToken:token, "userId": list, "ISActive": IsActive })
cshtml:
<form id="userForm">
@Html.AntiForgeryToken()
<div id="updateAjax">
...
</div>
</form>
请阅读下面的链接
哇,这是一个完整的解决方案,包含更多信息:
哇,这是一个完整的解决方案,包含更多信息:
字符串化请求验证令牌将无法在服务器上正确读取,您将收到一个错误。所以本质上“JSON.stringify({uuu RequestVerificationToken:token})”不会有什么好处,这就是为什么他在链接中