jquery ajax发布重定向问题

时间:2012-04-18 14:32:26

标签: php jquery redirect

包含表单的div,包含在post 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);
        });
    });
});     

出了什么问题?按下提交按钮后页面仍然存在,但评论未提交。 (我可以通过重新加载页面来判断)

1 个答案:

答案 0 :(得分: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在另一个文件夹中,则action / url可能是错误的。