Как получить отформатированные данные POST формы Django?

У меня есть Django ModelForm, но я не хочу, чтобы пользователь нажимал кнопку отправки reguar. Вместо этого я сделал свою собственную кнопку отправки и буду публиковать данные формы, используя Ajax/jQuery. Данные для публикации представляют собой смесь данных формы и другой информации, которую я собираю в своем пользовательском интерфейсе. Но... как мне получить отформатированные данные POST, которые должна была отправить html-форма? Если я могу получить это как объект JSON или jQuery, лучше!


person Roger Sodré    schedule 08.07.2010    source источник


Ответы (1)


Вы можете использовать для этого jQuery.serialize(), который вы, в свою очередь, можете передать как второй аргумент jQuery.post().

$('#formid').submit(function() {
    $.post('serverUrl', $(this).serialize(), callbackFunction);
    return false;
});

В качестве альтернативы вы также можете использовать для этого плагин jQuery Form, который упрощает работу.

person BalusC    schedule 08.07.2010
comment
Хороший! Но мне нужно смешать этот сериализованный объект с другим объектом, например {param1:1, param2:2}. Другая проблема заключается в том, что когда я создаю объект формы, всякий раз, когда я вызываю $.post(), он фактически публикует мою форму, перезагружая страница, которая никуда не годится! - person Roger Sodré; 09.07.2010
comment
1. Ну, вы можете получить $(this).serialize() в объект javascript перед почтовым вызовом и добавить к нему поля вручную; 2. Действительно, нет. $.post — это отправка AJAX, а return false означает, что действие отправки формы по умолчанию не выполняется. - person Daniel Roseman; 09.07.2010
comment
@Roger, @Daniel прав. Сделайте что-нибудь вроде var data = $(this).serialize(); data.param1 = 1;. return false; должен блокировать действие формы по умолчанию. - person BalusC; 09.07.2010
comment
Мне не хватило return false;, не отправит! Я публикую что-то вроде этого... $.param(myparams) + "&" + $('#form_id').serialize();. Спасибо!! - person Roger Sodré; 09.07.2010