Задать вопрос
@Little_Junior

Почему у меня получается объект с неверными ключами?

У меня есть форма, которую я отправляю через AJAX.
Я делаю такой запрос:

var formData = {
    'details': $("#order").serializeArray(),
    'items': JSON.parse(Cookies.get('basket')),
    'visitor': <?php echo (!empty($visitor)) ? json_encode($visitor) : null; ?>
};

console.log(formData);

$.ajax({
    type: 'POST',
    url: '/api/order/',
    data: JSON.stringify(formData),
    dataType: 'json',
    success: function(response) {
        console.log(response);

        if (response.status == 1) {
            handler = {
                'id': response.data.id
            };
        }
});


В итоге я получаю массив, но в details неверные ключи: они пронумерованные 0, 1, 2 ... , а в них уже лежат массивы с ключами name и value. Как это исправить, чтобы изначально отправлялось name => value?
  • Вопрос задан
  • 80 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
irtek
@irtek
Wordpress-addicted
Вам нужно обработать получаемый массив от serializeArray

const detailsData = $('form').serializeArray()

let details = {};
for (let i = 0; i < detailsData.length; i++) {
    details[detailsData[i]['name']] = detailsData[i]['value'];
}

var formData = {
    'details': details,
    'items': JSON.parse(Cookies.get('basket')),
    'visitor': <?php echo (!empty($visitor)) ? json_encode($visitor) : null; ?>
};

console.log(formData);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Dier_Sergio_Great
@Dier_Sergio_Great
Увлеченный человек
А почему Вы не использовали объект new FormData(form) ?
https://learn.javascript.ru/formdata
Ответ написан
Ваш ответ на вопрос

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

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