评论仅适用于第一篇文章

时间:2016-06-07 17:19:17

标签: javascript php jquery mysql ajax

我编写了一个状态框。它很成功。然后我为状态编写了评论系统。一切都很好。但它有一个问题。

问题: 当发布多个状态时,它只允许对第一个状态发表评论。如果我尝试在第二个状态上发表评论,它将无法加载AJAX请求。我也尝试检查开发控制台,但它没有显示任何内容。

注意:我将AJAX的状态加载到主页面中。评论由JavaScript函数发布,该函数将$.ajax({type: "post"});请求发送到文件,该文件检索文本,用户ID以及URL中的所有内容以将其保存到数据库中。

请告诉我其中是否有任何逻辑,可能是什么问题。

jQuery AJAX函数发表评论

function send(id, post_id) {
    var pos = $("#txt").val();
    var post = pos.trim();
    if(post !== '') {
        $.ajax({
            url: 'comment.php?id='+id+'&post_id='+post_id+'&post='+post,
            type: "POST",
            success: function() {
                reload();
            }
        });
    }
}

这就是我所说的:

<textarea cols="70" id="txt" placeholder="Write a comment.." class="input-user"></textarea><br />
<br />
<input type="submit" value="Post" style="background: #f2f2f2; width: 60px; height: 40px; padding: 5px; border-radius: 5px;" onclick="javascript:send('<?php echo $_SESSION['id']; ?>', '<?php echo $post['id']; ?>');" />

comment.php文件:

<?php 
include("includes/config.php");
include("includes/bbcode.php");
 $id = intval($_GET['id']);
$post_id = intval($_GET['post_id']);
 $pos = bbcode($_GET['post']);
$post = mysqli_real_escape_string($con, $pos);
  $post_comment = mysqli_query($con, "INSERT INTO comments(post_id, user_id, comment) VALUES('".$post_id."', '".$id."', '".$post."')") or die(mysqli_error($con));
 ?>

再次:所有这些仅适用于第一篇文章,即您只能对第一篇文章发表评论,如果您尝试评论第二篇或更高版本的帖子,AJAX不会甚至发送请求..

2 个答案:

答案 0 :(得分:0)

原因是因为你反复使用id =“txt”。脚本只会识别第一个,之后你就是吐司。另外,@ shut提到id需要是唯一的。将其更改为班级class="txt"

var pos = $(".txt").val();

然后按原样调用你的函数

$('form').on('click','.txt',function() {
    send('id_1', 'post_id_1');
});

function send(id, post_id) {
    var pos = $(".txt").val();
    var post = pos.trim();
    if(post !== '') {
        $.ajax({
            url: 'comment.php?id='+id+'&post_id='+post_id+'&post='+post,
            type: "POST",
            success: function() {

            }
        });
    }
}

假设你有一个单独的表格

<form>
<textarea cols="70" class="txt" placeholder="Write a comment.." class="input-user"></textarea><br />
<br />
<input type="button" value="Post" class="txt" style="background: #f2f2f2; width: 60px; height: 40px; padding: 5px; border-radius: 5px;" onclick="javascript:send('<?php echo $_SESSION['id']; ?>', '<?php echo $post['id']; ?>');" />
</form>

答案 1 :(得分:0)

任何元素的

id 必须是唯一的。 你正在使用所有帖子都有id txt的评论框然后它总是从第一个文本区域(第一个帖子)中选择数据,如果是其他帖子则为空白,如果textarea的值为空,则AJAX不发送请求。