Я пытаюсь опубликовать несколько данных формы в одном go (Да, им нужно go в качестве одного сообщения. Нет, это нельзя изменить. Даже не предлагать несколько отправок.) И я может построить правильный тип объекта.
convert_to_object - это пользовательская функция, которая преобразует сериализованный массив в объект с правильными парами ключ-значение
save_button.click(function(){
//Collect information
console.log("Collecting form data");
var data = {};
data.form1= convert_to_object($("[data-formtype='form1']").serializeArray());
data.form2= convert_to_object($("[data-formtype='form2']").serializeArray());
data.form3= convert_to_object($("[data-formtype='form3']").serializeArray());
var items= [];
forms_list.forEach(form_in_list=> {
items.push(convert_to_object(form_in_list.serializeArray()));
});
data.list_of_items = items;
//Send our data object to our endpoint
$.post("add", data)
.done(function(data, status){
//Success handling
})
.fail(function(data, status){
//Failure handling
})
});
Это создает правильный JavaScript объект, который имеет все значения в правильной форме, и я могу преобразовать это в JSON строку.
Проблема в том, что когда я отправляю эту JSON строку в Django, я не получаю пары ключ-значение в запросе. POST вместо этого я получаю всю строку json в качестве ключа и значение в виде пустой строки. Поэтому вместо
<QueryDict: {
"form1":{"field1":"","field2":"","field3":""},
"form2":{"field1":"","field2":"","field3":"","field4":""},
"form3":{"field1":"","field2":"","field3":"","field4":""},
"list_of_items":[ {"item1":"", "item2":""}]
}>
я получаю
<QueryDict:
'{"form1[field1]":[""],"form1[field2]":[""],"form1[field3]":[""],"form2[field1]":[""],"form2[field2]":[""],"form2[field3]":[""],"form2[field4]":[""]},"form2[field1]":["]","form2[field2]":[""],"form2[field3]":[""],"form2[field4]":[""]},"list_of_items[0][item1]":"","list_of_items[0][item2]":""}' : ''
}>
Как вы видите, во втором весь набор превращается в ключ, а не в серию пар ключ-значение.
Как убедиться, что мой объект правильно сопоставлен с набором запросов POST?
РЕДАКТИРОВАТЬ
JSON строка, которая отправляется (с форматированием для удобства чтения):
{
"form1":{"field1":"","field2":"","field3":""},
"form2":{"field1":"","field2":"","field3":"","field4":""},
"form3":{"field1":"","field2":"","field3":"","field4":""},
"list_of_items":[{"item1":"", "item2":""]
}
РЕДАКТИРОВАТЬ 2
Снимок экрана XHR (Firefox). Пожалуйста, игнорируйте 501 ответ, который является намеренным ответом (пока) ![Screenshot of XHR (Firefox)](https://i.stack.imgur.com/PYFxR.png)