1

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

1 に答える 1

3

selectorあなたとonメソッドが正しく機能しているとは思いません。試してみてください:$('form').on('submit', function(e) {クラスの要素でフォームをラップしましたanswerContainerか?

そして、念のために$.post使用しないでください$.ajax

そして、thisoniの内部に要素があります。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('');
            }
        });
    });
});
于 2011-12-31T19:48:10.797 に答える