这有什么问题? .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>
答案 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;
});
});