【问题标题】:jquery ajax post redirect issuejquery ajax发布重定向问题
【发布时间】:2012-04-18 14:32:25
【问题描述】:

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

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

【问题讨论】:

  • 你是如何保存评论的?你能描述一下它是如何失败的吗?您是否有 Firebug 或任何其他可以显示潜在 JS 错误的 Web 开发工具?
  • firebug 根本没有显示任何错误。我通过使用“INSERT..”查询数据库来保存,但我想 php 没有任何问题,因为没有 js 的代码运行完美。

标签: php jquery redirect


【解决方案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 可能是错误的。

【讨论】:

  • 我试过 .serialize();而另一种方式,但仍然没有任何反应,页面保持原样,评论没有被提交..
  • @jeroen,Data 变量,comment,是一个不错的选择。确保您正在合并该行。
  • 使用 var comment = {'content': form.find('textarea[name="content"]').val()};我做了 console.log(posturl) ,它给出了
    的 action 属性中的 url (这是预期的),并且使用 console.log(comment['content']) 我从 textarea 获取内容也是意料之中..
  • @Systemfreak 是的,但您只发送变量 content 并且在您的 php 脚本中您使用的是 if(isset($_POST['submit_comment'])){ 并且您没有发布该变量。
  • 天哪,我觉得自己太愚蠢了,我什至没有注意到这一点。非常感谢,这是我的问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多