Не удается передать маркер защиты от подделки нескольким ajax в одном представлении - PullRequest
0 голосов
/ 01 марта 2020

Я пытаюсь передать маркер защиты от подделки внутри каждого ajax вызова для защиты CSRF. проблема в том, что у меня есть два метода POST ajax в одном представлении, и один из них проходит, а другой выдает ошибку Обязательное поле формы защиты от подделки "__RequestVerificationToken" отсутствует. хотя я передаю Это. Что делать, чтобы я мог передавать токен каждому ajax? Есть ли лучший подход?

$(document).ready(function () {
        //toastr.success('Success messages');
        var token = $("[name='__RequestVerificationToken']").val();

        function RecSLAData() {
            SLAData();
            var account = $('#Account_ID').val();

            //***Empty LOB for another selection***//

            $('#Duration').children().remove();

            $.ajax({
                type: 'POST',
                url: '/Add_Request/GetRecSLA/',
                data: {
                    __RequestVerificationToken: token,
                    acc: account,

                },
                success: function (result) {

                    //***loop on results and add to LOB***//
                    $.each(result, function (k, SubAccounts) {


                        $("#Duration").append('<option value="' + SubAccounts.Value + '">' + SubAccounts.Text + '</option>');

                        //$('<option>').val(v.Sub_Account_ID).text(v.Sub_Account_Name).appendTo('#LOB');
                    });
                }
            });
        };

        $('#Account_ID').on('change', function () {
            var account = $('#Account_ID').val();
            var Emp = $('#Employee_no').val();
            var Operation_Date = $('#Operation_Date').val();

           // $('#LOB').children('option:not(:first)').remove();
            $('#LOB').children().remove();

            $.ajax({
                type: 'POST',
                url: '/Add_Request/GetData/',
                data: {
                    __RequestVerificationToken: token,
                    acc: account,

                },
                success: function (result) {

                    $.each(result, function (k, SubAccounts) {

                        $("#LOB").append('<option value="' + SubAccounts.Value + '">' + SubAccounts.Text + '</option>');

                      });
                }
            });

Я добавил @ html .anitforgerytoken () в форму, которую я отправляю. Также добавлено [ValidateAntiForgery] над каждым методом записи, в который я отправляю данные в контроллер. решения, которые я попробовал: защита от подделки ajax

Я застрял здесь. Я очень ценю вашу помощь.

...