我有博客帖子列表,该帖子有评论。帖子和评论我从数据库循环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);
}
})
}
});
答案 0 :(得分:0)
因为您在表单中为每个post id字段指定相同的名称和类,所以当您按照以下方式访问它时:
var pid = $(".pid");
您将收到所有三个pid元素,以便对变量pid进行注释。当你执行pid.val()
时,它只返回第一个值,这就是无论你提交哪个评论,你都会看到相同的pid的原因。