Ajax调用无法处理附加项

时间:2014-03-06 23:08:47

标签: javascript php jquery ajax

我有一个评论系统,将新发布的评论附加到其余部分。当用户悬停评论时,会显示“删除”按钮。

当用户点击删除按钮时,会显示确认对话框,如果确认,则会完成ajax调用以删除评论。

这对于页面上已有的注释非常有效,但是Ajax调用似乎不适用于附加的项目。

所以示例评论如下:

    <div class='textcomment' id='".$commentID."'>
        <a class='$rightscommentcolor'>USERNAME:</a>&nbsp;
        THIS IS THE COMMENT TEXT
        <div class='commentActionButton'>
            <form action='process/deletecomment.php' method='post' class='delrepcomment'> 
                <input class='deletecommentsubmit' name='submit-delete' type='$buttontype' value='delete'>
            </form>
        </div>
    </div>

要显示按钮我使用:

    $(".commentsholder").on("mouseenter", ".textcomment", function(){
     var $this = $(this);       
     $(this).closest('.textcomment').find('.commentActionButton').show();
    });

然后删除评论ajax:

    $(document).on('submit','.delrepcomment',function(){
    var $targetComment = $(this);

    if (confirm('Do you really want to delete this comment?')) {
    $.ajax({
    type: "POST",
    url: "process/deletecomment.php",
    data: $targetComment.serialize(),
    dataType: "json",
    success: function(response){
    if (response.commentDeleted === true) {
        $("#"+response.commentID).remove();
    }
    else {
        $('.delrepcomment').after('<div class="error">Something went wrong!</div>');
    }
    }
    });
    return false;
    } else {
       return false;
   }
    });
});

这一切都正常,但是当点击附加评论上的删除按钮时,会显示确认对话框,但评论不会被删除。

这让我相信ajax电话没有发生?

如果我删除ajax方面的东西,并使用php页面直接保留表单,它的工作原理。即使是附加的注释,但在使用ajax时它也不起作用。

评论附加如下:

if (response.commentSuccess === true) {
        $this.closest('.addcomment').prev().append("<div class='textcomment'><a class='"+response.userRights+"'>"+response.username+":</a>&nbsp;"+response.commentToPost+"<div class='commentActionButton'><form action='process/deletecomment.php' method='post' class='delrepcomment'><input class='deletecommentsubmit' name='submit-delete' type='submit' value='delete'></form></div></div>");
    }

1 个答案:

答案 0 :(得分:1)

当您通过AJAX附加新评论时,您没有设置id div的textcomment属性,所以当您从AJAX调用返回时,您无法通过它找到它id并将其删除:

//DIV does not have id!
...append("<div class='textcomment'><a class='"+r...