У меня есть Django ModelForm, но я не хочу, чтобы пользователь нажимал кнопку отправки reguar. Вместо этого я сделал свою собственную кнопку отправки и буду публиковать данные формы, используя Ajax/jQuery. Данные для публикации представляют собой смесь данных формы и другой информации, которую я собираю в своем пользовательском интерфейсе. Но... как мне получить отформатированные данные POST, которые должна была отправить html-форма? Если я могу получить это как объект JSON или jQuery, лучше!
Как получить отформатированные данные POST формы Django?
Ответы (1)
Вы можете использовать для этого jQuery.serialize()
, который вы, в свою очередь, можете передать как второй аргумент jQuery.post()
.
$('#formid').submit(function() {
$.post('serverUrl', $(this).serialize(), callbackFunction);
return false;
});
В качестве альтернативы вы также можете использовать для этого плагин jQuery Form, который упрощает работу.
person
BalusC
schedule
08.07.2010
Хороший! Но мне нужно смешать этот сериализованный объект с другим объектом, например {param1:1, param2:2}. Другая проблема заключается в том, что когда я создаю объект формы, всякий раз, когда я вызываю $.post(), он фактически публикует мою форму, перезагружая страница, которая никуда не годится!
- person Roger Sodré; 09.07.2010
1. Ну, вы можете получить
$(this).serialize()
в объект javascript перед почтовым вызовом и добавить к нему поля вручную; 2. Действительно, нет. $.post
— это отправка AJAX, а return false
означает, что действие отправки формы по умолчанию не выполняется.
- person Daniel Roseman; 09.07.2010
@Roger, @Daniel прав. Сделайте что-нибудь вроде
var data = $(this).serialize(); data.param1 = 1;
. return false;
должен блокировать действие формы по умолчанию.
- person BalusC; 09.07.2010
Мне не хватило
return false;
, не отправит! Я публикую что-то вроде этого... $.param(myparams) + "&" + $('#form_id').serialize();
. Спасибо!!
- person Roger Sodré; 09.07.2010