.serialize()返回空字典。我做错了什么?

时间:2011-03-02 20:26:18

标签: jquery ajax django serialization

这有什么问题? .serialize()什么都不返回。我已经尝试了几种方法来做到这一点,但最终都是空字典。形式,输入,#idofform,#idofinput,没有任何反应...

 
$(document).ready(function(){
    $.post("/resultjs/", $("form").serialize(), function(data) {
            $('.content').html(data);
            });
});
......和HTML。只是一个普通的简单形式。要完全清楚:我想从表单中收集帖子数据,将它们发布到/ resultjs /(django),检索结果并将其写入.content div
 

<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 个答案:

答案 0 :(得分:1)

您需要将表单提交绑定到单击提交按钮。做这样的事情:

$(document).ready(function() {
    $("form input[type='submit']").click(function() {
        $.post($("form").attr("action"), $("form").serialize(), function(data) {
            $('.content').html(data);
        });
        return false;
    });
});

答案 1 :(得分:1)

仅在提交函数时发送您的$.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;
    });
});