Я динамически создал форму опроса, используя jquery, и я хочу отправить форму через ajax и добавить к ней свои собственные данные.Я делаю это потому, что в созданном опросе есть вопросы, и на каждый вопрос есть определенное количество ответов.Но если вы просто отправляете форму, вы получаете массив вопросов и массив ответов, но невозможно определить, какой ответ принадлежит какому вопросу.Чтобы справиться с этой проблемой, я попытался создать свой собственный массив, или, скорее, карту, где вопросы являются ключами, и каждый вопрос имеет свои собственные ответы в качестве значений.Я не нашел лучшего способа сделать это - просто использовать ajax для изменения отправки.Как видно из заголовка, это не сработало, просто не проходит, нет сообщений об ошибках.
$('.survey').submit(function(event){
event.preventDefault();
var map = new Array();
var q;
var form = $(this);
$('div[name="question"]').each(function(){
q = $(this).find('.question')[0].value;
map["q"] = new Array();
$(this).find('.answer').each(function(){
map["q"].push($(this).val()+"");
});
});
var data = form.serializeArray();
data["questions"] = JSON.stringify(map);
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: data
});
});
Вот код, о котором идет речь, который не работает, и вот jsfiddle дляВся программа: https://jsfiddle.net/e9tbcwdj
Все отлично работает, кроме отправки.Когда я не читаю свою карту, я вижу по предупреждению, что карта была успешно добавлена к данным, и что data ["questions"] ["q"] [0], например, показывает ожидаемый результат.Вот почему я почти уверен, что проблема заключается в сериализации, но я не совсем уверен, как сериализовать мою «карту», так как stringify не справился с этой задачей.Я всегда немного беспомощен, когда дело доходит до сериализации.Должен ли я использовать функцию карты?