0

投稿 div に含まれるフォームを含む div

<div class="add-comment">
    <form action="post.php?post=<?php echo $post->id; ?>" class="commentform" method="post">
        <textarea name="content" class="comment_content"></textarea>
        <input type="submit" class="submit" name="submit_comment" value="Add Comment" />
    </form>
</div>

これは投稿を処理するコードです

if(isset($_POST['submit_comment'])){
    if(isset($_GET['post'])){
        $content = strip_tags(trim($_POST['content']));
        $comment = Comment::make($_GET['post'],$content,$_SESSION['user_id'],1);
        if($comment && $comment->save()){
            echo "Post submitted succesfully.";         
        }else{
            $message = Comment::$comment_message;
        }       
    }
}

JS を使用しないコードは、期待どおりに機能しています。私がやろうとしているのは、ページを更新せずにコメントを送信することです。これが私が試したJSコードですが、失敗したようです。

$(document).ready(function(){
    $('.commentform').submit(function(event){
        event.preventDefault(); 
        var form = $(this);
        var posturl = form.attr('action');
        var comment = form.find('textarea[name="content"]').val();
        //var comment = $(this).closest($('.comment_content'));
        $.post(posturl, comment, function(data){
            console.log(data);
        });
    });
});     

何がうまくいかないのですか?送信ボタンを押した後、ページは残りますが、コメントは送信されません。(ページをリロードするとわかります)

4

1 に答える 1

1

問題は、キーと値のペアではなく、値だけを投稿していることです。

var comment = form.find('textarea[name="content"]').val();

次のようにする必要があります。

var comment = {'content': form.find('textarea[name="content"]').val()};

それとは別に、すべての値を投稿する必要があるため、そうしないとphpが失敗するため、次のようなものを使用することをお勧めします。

var comment = form.serialize();

編集:まだ問題があるため、console.log投稿する前にすべての JavaScript 変数を使用する必要があります。js が別のフォルダーにある場合は、アクション / URL が間違っている可能性があります。

于 2012-04-18T14:36:18.747 に答える