隐藏div然后发布表单

时间:2012-04-17 08:50:19

标签: php jquery

我还在处理我的多阶段表格(http://jsfiddle.net/xSkgH/93/),并已合并以下解决方案以协助ajax提交:

<script type="text/javascript">
$(document).ready(function() {
    $("#postData").click(function() {
        $("#last-step").hide(600);

            $("#task5_booking").submit(function() {
                $.post('resources/process2.php', function(data) {
                    $("#result").html(data);
                });
            });

        return false;
    });
});
</script>

它很好地淡出了最后一步,但是当加载内容ot process2.php时,它只是所有表单字段的数组:

<?php
print_r($_POST);
?>

似乎根本没有发生任何事情。 div仍然是空白的。非常感谢任何帮助人员。提前谢谢。

3 个答案:

答案 0 :(得分:3)

如果您通过ajax调用资源,您还应该沿着调用传递序列化表单。假设$("#task5_booking")是您的表单元素

$("#task5_booking").submit(function(evt) {
      evt.preventDefault();
      $.post('resources/process2.php', { data: $("#task5_booking").serialize() }, function(data) {
            $("#result").html(data);
      });
});

提交表格时

  1. 停止默认事件(提交),否则表单提交会立即停止后续代码,并且ajax调用永远不会启动 - 这是使用preventDefault()方法完成的;
  2. 进行帖子调用,传递使用serialize()方法序列化的表单(请参阅http://api.jquery.com/serialize/)。
  3. 请注意,正如杰克所指出,你的小提琴中的表格有camperapplicationForm个ID,而不是task5_booking

答案 1 :(得分:1)

我认为您应该删除submit功能:

<script type="text/javascript">
$(document).ready(function() {
    $("#postData").click(function() {
        $("#last-step").hide(600);


        $.post('resources/process2.php', function(data) {
            $("#result").html(data);
        });

        return false;
    });
});
</script>

答案 2 :(得分:1)

$(document).ready(function() {
    $("#postData").click(function(e) {
        e.preventDefault();
        $("#last-step").hide(600);

            $("#task5_booking").submit(function() {
                $.post('resources/process2.php', $(this).serialize(), function(data) {
                    $("#result").html(data);
                });
            });
    });
});