Почему теряется переменная при ajax запросе?

По какой то причине после обновления DOM переменная не добирается до сервера, хотя существует в момент отправки.

let $data = { sort: [ {}, {}, {}, {} ] };

console.log($data);

sort:
0 : {
        id: 1,
        parent_id: undefined,
        depth: 1,
        left: 2,
        right: 7,
    }
1 : {
        id: 6,
        parent_id: 1,
        depth: 2,
        left: 3,
        right: 4,
    }
2 : {
        id: 3,
        parent_id: 1,
        depth: 2,
        left: 5,
        right: 6,
    }

$.ajax({
            url: "/action/function",
            type: "POST",
            data: $data,
            dataType: "JSON",
            cache: false
        }).done(function ($response) {
                $(currentelement).data("id", $response.id);
            }
        });


На сервер приходит null. Хотя при отправке перед обновлением DOM переменная приходит. В чем может быть проблема.

Точнее не сам DOM, а атрибуты элементов в контейнере из которого берется массив данных.
Отправляю 1 запрос, обновляю данные на сервере, обновляю данные на странице в data-атрибутах.
Пытаюсь отправить повторный запрос и приходит пустое значение.
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
elevennine
@elevennine Автор вопроса
Мой косяк.
Проблема заключалась в глобальном конфиге.
if ($data instanceof FormData) {
            $.ajaxSetup({
                processData: false,
                contentType: false
            });
        }

В первом случае отправлялась формдата, во втором объект. Не знал, что конфиг не сбрасывается при отправке.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
proudmore
@proudmore
Приведите полный код обработчика события и объясните, что вы вообще делаете. Мало информации. К примеру, упоминание DOM и его обновления наводит на мысль о том, что вышеприведенный json лежит в DOM дереве статикой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы