jQuery关于提交问题


jQuery on submit issue

由于某些原因,我的提交事件不起作用,但是,如果我将其更改为单击表单,它就会起作用,这是我的代码:

查询:

 <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>

事实上,当我使用上的按钮时,它甚至都不起作用

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

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

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

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

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

但在提交时,表单将被提交,并且任何活动的ajax请求都将被取消。试试之类的东西

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

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