.serialize () возвращает пустой dict. Что я делаю не так? - PullRequest
1 голос
/ 02 марта 2011

Что с этим не так?.serialize () ничего не возвращает.Я пробовал несколько способов сделать это, но все заканчиваются пустым словарем.форма, ввод, #idofform, #idofinput, ничего не происходит ...

 <code>
$(document).ready(function(){
    $.post("/resultjs/", $("form").serialize(), function(data) {
            $('.content').html(data);
            });
});
... и HTML.просто нормальная простая форма.Для полной ясности: я хотел бы собрать данные публикации из формы, опубликовать их в / resultjs / (django), получить результат и записать его в .content div
 </p>

<div id="search">   

<form action="/resultjsall/" method="post"><div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='somedjangocsrftoken' /></div>

<input type="text" name="what" id="what" value="" size="80" />
<input type="submit" value="Find" />
</form>
</div>

Ответы [ 2 ]

1 голос
/ 03 марта 2011

Отправьте $.post только после отправки функции (следовательно, обработчик события <form_selector>.submit( ... ), см. .submit().

Обратите внимание, что я сохранил часть $(document).ready.Цель этого состоит в том, чтобы дождаться загрузки всех других сценариев и DOM, прежде чем делать такие вещи, как привязка событий к элементам в DOM (например, к этой форме), потому что если элементы, к которым вы привязываетесь, не загружаются в данный моментпривязка выполняется, вместо этого ничего не произойдет.

$(document).ready(function() {
    $("form#myForm").submit(function() {
        $.post($(this).attr("action"), $(this).serialize(), 
          function(data) {
            if (data == "") { alert("No data returned!"); return; }
            // otherwise set the content div to the data we received
            $('div.content').html(data);
          }
        );
        // disable normal submitting of the form since we use ajax now
        return false;
    });
});
1 голос
/ 03 марта 2011

Вам необходимо привязать отправку формы к нажатию кнопки отправки.Сделайте что-то вроде этого:

$(document).ready(function() {
    $("form input[type='submit']").click(function() {
        $.post($("form").attr("action"), $("form").serialize(), function(data) {
            $('.content').html(data);
        });
        return false;
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...