获取每个元素的ID

时间:2016-03-14 12:00:11

标签: javascript php jquery ajax

我有博客帖子列表,该帖子有评论。帖子和评论我从数据库循环foreach。所以当我想通过ajax创建新评论时我有问题。我有表格和一个隐藏字段用于保存帖子ID。 当我从jquery尝试访问该元素时,post_id就是所有时间。我尝试使用alert提交调试,以查看将返回的女巫post_id。所有时间都返回270.当我点击其他帖子评论时,提交ID不会改变。

帖子和评论

<?php foreach($posts as $post): ?>
   <h1><?= $post->title; ?></h1>
    <p><?= $post->text; ?></p>
    <?= if($comments = postComments($post->id): ?>
        <?= foraech($comments as $comment): ?>
             <form id="post_add">
                 <input type="text" placeholder="Say somthing..." name="comment">
                  <input type="hidden" name="pid" class="pid" value="<?= $post->id">
                  <input type="submit">
             </form>
         <?= endforeach; ?>
    <?= endif; ?>
<?= endforeach; ?>



submiteComment: function() {

        var comment_form = $("#comment_add");
        var comment_text = $(".comment_text");
        var pid = $(".pid");  // post id

        $("body").on("submit", comment_form, function(e) {
            e.preventDefault();

            alert(pid.val()); // debug all time return 270 for all comments

            if($.trim(comment_text).length) {

                $.ajax({
                    type: 'post',
                    url: baseurl + '/comment/create',
                    data: {item_id: post_id.val(), comment_text: comment_text.val()},
                    success: function(data) {
                        alert('success');
                    },
                    error: function(t, r, j) {
                        alert(r.responseText);
                    }
                })
            }
        });

1 个答案:

答案 0 :(得分:0)

因为您在表单中为每个post id字段指定相同的名称和类,所以当您按照以下方式访问它时:

var pid = $(".pid");

您将收到所有三个pid元素,以便对变量pid进行注释。当你执行pid.val()时,它只返回第一个值,这就是无论你提交哪个评论,你都会看到相同的pid的原因。