Forms 表单仍在默认情况下提交

Forms 表单仍在默认情况下提交,forms,jquery,preventdefault,Forms,Jquery,Preventdefault,我使用jQuery将表单数据提交到表单操作中的文件中。但是,当我提交表单时,浏览器会重定向到操作(comment.php)。我不知道为什么会这样,因为e.preventDefault()应该停止浏览器的重定向。理想情况下,我希望浏览器不重定向并保持在当前页面(index.php) jQuery: <script type='text/javascript'> $('document').ready(function(){ $('.commentContaine

我使用jQuery将表单数据提交到表单操作中的文件中。但是,当我提交表单时,浏览器会重定向到操作(comment.php)。我不知道为什么会这样,因为
e.preventDefault()
应该停止浏览器的重定向。理想情况下,我希望浏览器不重定向并保持在当前页面(index.php)

jQuery:

<script type='text/javascript'>
    $('document').ready(function(){
        $('.commentContainer').load('../writecomment.php');
        $('.answerContainer').on('submit', 'form', function(e){
            e.preventDefault();
            var form = $(this).closest('form');
            $.post($(form).attr('action'), 
            $(form).serialize(), 
            function() {
                $('.commentContainer').load('../writecomment.php');
                $('.commentBox').val('');
            }
        });
    });
</script>

$('document').ready(函数(){
$('.commentContainer').load('../writecomment.php');
$('.answerContainer')。关于('submit','form',function(e){
e、 预防默认值();
var form=$(this).closest('form');
$.post($(form).attr('action'),
$(表单).serialize(),
函数(){
$('.commentContainer').load('../writecomment.php');
$('.commentBox').val('');
}
});
});
HTML格式:

<form method='POST' action='../comment.php'>
    //form contents
</form>

//表格内容

我认为您的
选择器和
上的
方法工作不正常。请尝试:
$('form')。在('submit',函数(e){
上,您确定已将表单包装在带有类
answerContainer
的元素中吗

然后确保不要使用
$。post
使用
$。ajax

位于元素上的i中,例如
表单
不是第一个选择器
。应答容器

$('document').ready(function(){

    $('.commentContainer').load('../writecomment.php');

    $('.answerContainer').on('submit', 'form', function(event) {
        event.preventDefault();
        var $form = $(this);
        $.ajax({
            "url": $form.attr("action"),
            "data": $form.serialize(),
            "type": $form.attr("method"),
            "response": function() {
                $('.commentContainer').load('../writecomment.php');
                $('.commentBox').val('');
            }
        });
    });
});

在提交函数中添加
return false;
。@Virendra我应该在哪里添加return false?在prevent default之后还是之前?@Virendra运气不好。仍然添加
onsubmit=“return false;”
到您的表单。@Virendra页面没有重定向,但现在数据没有被放置在作为解决方案的数据库中。我不确定我的代码的哪一部分具体不起作用,但这是一个很好的答案。非常感谢您。但您至少有一个错误。
var form=$(this.closest(“表单”).
应该是
var form=$(this)
@user802370,即使您正在阻止默认的表单操作,这一行仍然会继续提交表单:
$.post($(form).attr('action')),
。正如答案中所述,使用
.ajax
而不是
。post
才是真正解决问题的方法。@AndreasAL这不是原始问题的一部分,但当我使用代码时,commentBox值不清楚。我使用代码时也不清楚,但有没有猜测为什么会发生这种情况?我仔细检查了文本区域课堂上有评论吗