0

一旦用户单击“打开评论”,我目前正在尝试使 ajax 评论功能起作用。

目前我正在从我的 php 脚本中获取数据,并且 ajax 调用的状态是“200 OK”,所以它确实有效,但我无法获得当前评论的正确值,为了将其发布到 php 脚本。

我要问的是如何获取".posted_comment_id"类的值,然后如何加载返回到".commentView"类中的数据?

jQuery/AJAX:

$(".closedComment").click(function(){
    var $this = $(this);
    $this.hide().siblings('.openComment').show();
    $this.siblings().next(".commentBox").slideToggle(); 

        $.ajax({
         type: "POST",
         url: "http://example.dev/comments/get_timeline_comments", 
         data: {post_id: $this.siblings().next(".commentBox").find(".posted_comment_id").val()},
         dataType: "text",  
         cache:false,
         success: 
              function(data){
                $this.closest(".commentView").load(data);
              }
         });

    return false;
});

HTML:

<div class="interactContainer">
    <div class="closedComment" style="display: none;">
        <a href="#" class="floatLeft rightMrgn">open comments</a>
    </div>
    <div class="openComment" style="display: block;">
        <a href="#" class="floatLeft rightMrgn">close comments</a>
    </div>
    <div class="commentBox floatLeft" style="display: block;">
        <form action="http://example.com/comments/post_comment" method="post" accept-charset="utf-8">
          <textarea name="comment" class="inputField"></textarea>
          <input type="hidden" name="post" value="13">
          <input type="hidden" name="from" value="5">             
          <input type="hidden" name="to" value="3"> 
          <input type="submit" name="submit" class="submitButton">
        </form> 
          <div class="commentView"></div>   
          <div class="posted_comment_id" style="display:none;">13</div>  
    </div>
</div>
4

2 回答 2

1

替换.val.html.text。这将返回innerHTML元素的。

data: {
    post_id: $this.siblings().next(".commentBox").find(".posted_comment_id").text()
}

您可能需要将字符串转换为整数才能使其工作。

如果查询选择器失败,则此选择器可能会执行此工作:

$this.parent().find(".posted_comment_id")

要在您的网页上添加返回的数据,请使用success处理程序。这是一个如何完成的示例:

success: function(json) {
        // Parse your data here. I don't know what you get back, I assume JSON
        var data = JSON.parse(json),
            content = data.whatever_you_want_to_print;

        // Assuming your selector works, you put in in the element using .html
        $this.closest(".commentView").html(content);
    }
});
于 2013-10-07T18:56:02.590 回答
0

您可能想要执行以下操作:

$(this).parents('.interactContainer').find(".posted_comment_id").text()
于 2013-10-07T18:55:53.927 回答