如果我有
$logger = $_SESSION['logger'];
$postquery = $con->query("SELECT * FROM posts ORDER BY id DESC LIMIT 5");
while($row = $postquery->fetch_object()){
$posts[] = $row;
}
然后:
foreach($posts as $post):?>
<div class="post"><?php
echo '<div class="text">'.$post->text.'</div><textarea id='comment'></textarea>';
现在jquery和ajax:
<script type="text/javascript">
$(document).ready(function() {
$('#comment').keypress(function(event) {
var key = (event.keyCode ? event.keyCode : event.which);
if (key == 13) {
var comment = $('#comment').val();
var postid = '<?php echo $post->id; ?>';
var from = '<?php echo $logger; ?>';
$.ajax({
method: "POST",
url: "intodb.php",
data: {c: comment, p: postid, f: from},
success: function(status) {
$('#comment').val('');
}
});
};
});
});
</script>
在intodb.php里面:
$c =$_POST['comment'];
$p =$_POST['postid'];
$f =$_POST['from'];
$insert = "INSERT INTO comment (id, comment, from, for) VALUES ('','$c','$f','$p')";
if(mysqli_query($con,$insert)){
echo "commented....";
}
现在我有问题,jquery只使用数据库的最后输出作为值... 我在这里输出了5个帖子,如果我评论第一个第二个第三或第四个。插件在每个地方都是无处不在的,因为我只在第五篇评论。 此外,我已经使用类重写了js,但是当我将其更改为class时:
$('.comment') AND <textarea class='comment'>
我的剧本不起作用......有人可以帮助我,我试着这样做3天......如果你可以帮助我先尝试一下你自己,因为我问了几次问题在这里,答案是添加无关紧要的东西......我查了许多其他问题和答案,但似乎它对我不起作用....
我在每个脚本的每个位置都有这个问题,例如,如果我从数据库中获取的产品很少,并且在悬停时我需要显示一些文本。它仅适用于其中一个......
更新:在这张照片上我有回复btn并点击textarea应该看到..它仅适用于从数据库的第一次获取...在其他js代码不起作用...为什么?
答案 0 :(得分:0)
var postid = '<?php echo $post->id; ?>';
var from = '<?php echo $logger; ?>';
这很正常。你的postid永远是一个价值。你需要遍历你的帖子并用它制作一个javascript数组。
虽然做这件事是不好的做法。
您应该使用数据库ID引用您的html id。
想象一下你有类似的东西
<div id="my-post-1" class="post">Some Text</div>
<div id="my-post-3" class="post">Some Text Again</div>
<div id="my-post-5" class="post">Some Text Again</div>
现在,您可以在数据库和客户端之间进行参考,一切都变得更加轻松
$('.post').click(function() {
var postid = this.id.split('-')[2]
})
我对jquery有点生疏,但这应该有帮助