Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防伪令牌和Ajax JSON.stringify Post不起作用_Javascript_Ajax_Asp.net Mvc_Json_Jquery - Fatal编程技术网

Javascript 防伪令牌和Ajax JSON.stringify Post不起作用

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.

我尝试在JSON.stringify中使用防伪令牌,我检查了很多站点,但都没有成功。这是我的ajax代码,可以毫无问题地删除一些信息。现在我添加了防伪令牌,我不知道如何更改我的ajax代码以使其正常工作。我还将ValidateAntiForgeryToken添加到我的操作中

<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})”不会有什么好处,这就是为什么他在链接中