Опубликовать данные $ (form) .serialize () и массив вместе - PullRequest
0 голосов
/ 03 июля 2019

У меня проблемы с отправкой формы через ajax. В дополнение к полям, заполненным пользователем, мне нужно отправить array объектов вместе.

AJAX POST:

submitHandler: function (form) {
                    $.ajax({
                        url: urlPost,
                        type: "POST",
                        dataType: "json",
                        data: $(form).serialize() + JSON.stringify(myArray),
                        success: function (resposta) {
                           alert('success');
                        }
                    });
                }

Если я отправлю только $(form).serialize(), я могу, но с array нет.

ARRAY:

myArray = [{name: 'a', node: 1}, {name: 'b', node: 12}, ...];

Ответы [ 3 ]

0 голосов
/ 03 июля 2019

.serialize() + Some JSON String не имеет смысла.

Согласно документам:

https://api.jquery.com/serialize/

Метод .serialize () создает текстовую строку в стандартной URL-кодировке обозначения.

Итак, вы действительно берете строку типа foo=bar&goat=baz и затем добавляете строку JSON в лайк. Что не имеет смысла.

Я думаю, вам лучше было бы сериализовать форму самостоятельно в объект JSON. Добавьте еще один ключ для вашего массива, а затем выгрузите этот объект в JSON через JSON.stringify, и эта строка станет данными вашего запроса.

0 голосов
/ 03 июля 2019

После подсказки Коди Коглана я создал объект, который добавляет все свойства формы и самого массива. Код выглядит так:

var dataForm = {};
$($(form).serializeArray()).each(function(index, obj){
    dataForm[obj.name] = obj.value;
});
dataForm["MyArray"] = myArray;

и ajax: post: dataForm.

0 голосов
/ 03 июля 2019

Измените data: $(form).serialize() + JSON.stringify(myArray) на data: $(form).serialize() + "&arr=" + JSON.stringify(myArray). Для получения дополнительной помощи обратитесь к https://stackoverflow.com/a/10398820/4518930

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...