关于提交问题的jQuery

时间:2013-02-14 23:30:23

标签: php jquery

由于某些原因,我的提交事件无法正常工作,但是,如果我将其更改为单击表单,则可以使用,这是我的代码:

JQUERY:

 <script>
(function(){
        $('form').on('click',function(){

                $.post("../includes/register.php",  $('form').serialize(),
                function(data){
                    $('body').append(data);                 
                });
        });
    })();
</script>

REGISTER.PHP:

<?php 

if(isset($_POST['username'])){
echo $_POST['username'];
}
?>

这很好用,每当我点击表单文本输入时它会附加用户名,但是,当我尝试使用submit方法时,它不会输出任何内容:

<script>
(function(){
        $('form').submit(function(){

                $.post("../includes/register.php",   $('form').serialize(),
                function(data){
                    $('body').append(data);                 
                });
        });
    })();
</script>

事实上,当我使用button.on('click')

时,它甚至不起作用

3 个答案:

答案 0 :(得分:1)

您正在使用立即调用的函数而不是文档就绪处理程序,您也应该阻止事件的默认操作,请尝试以下操作:

$(function(){
    $('form').on('submit',function(event){
        event.preventDefault();
        $.post("../includes/register.php",  $(this).serialize(),
        function(data){
            $('body').append(data);                 
        });
    });
});

答案 1 :(得分:0)

默认情况下,表单将提交给表单的操作。你需要防止这种情况发生。您正在等待通过ajax进行服务器响应,因此在默认操作发生之前,您很可能永远不会看到您的回调执行。

$('form').submit(function(e){
            e.preventDefault(); // put this first
            $.post("../includes/register.php",   $('form').serialize(),
            function(data){
                $('body').append(data);                 
            });
    });

答案 2 :(得分:0)

现在这是猜测,因为我不知道您的HTML代码是什么样的。

但是在提交时,表单将被提交,任何活动的ajax请求都将被取消。 尝试像

这样的东西
<script>
(function(){
   $('form').submit(function(){    
     $.post("../includes/register.php",   $('form').serialize(),
       function(data){
         $('body').append(data);                 
     });
     return false;
   });
  })();
</script>

这将停止提交事件,您应该发布事件。虽然它实际上不会提交表格。所以你必须手动完成。