Форма все еще отправляется на веб-сайте - PullRequest
1 голос
/ 31 декабря 2011

Я использую 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>

HTML-форма:

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

1 Ответ

3 голосов
/ 31 декабря 2011

Я не думаю, что ваш метод selector и on работает правильно.Попробуйте: $('form').on('submit', function(e) { Вы уверены, что обернули свою форму в элемент с классом answerContainer ??

, а затем просто для уверенности, не используйте $.post используйте $.ajax:

и this внутри элемента, например.form не первый селектор .answerContainer.

$('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('');
            }
        });
    });
});
...