我在PHP文件的while循环中有一个按钮。
该按钮与PHP值相关联,该值随mysqli_fetch_array
变化。
我在mysqli_fetch_array
中只加载了3个值。
我的ajax函数中有数据,我的问题是它只接受第一行的值,而不接受其他行的值。实际上,函数在mysqli_fetch_array
的第一行是正常的,似乎我的代码不在其他行上工作,就像PHP循环在第一行停止一样。
这是我的javscript代码(它在我的循环的同一页面上声明,之后):
<script type="text/javascript">
$(document).ready(function() {
$("#up").click(function() {
var varno_commentaire = $("#no_commentaire").val();
$.ajax({
url: "upvoteCommentaire.php",
type: "POST",
data: {
no_commentaire: varno_commentaire
},
async: false,
success: function(result) {
alert(result);
}
});
});
});
</script>
这是我的PHP循环:
<?php
while($comm = mysqli_fetch_array($res2))
{
echo
'<label class="text-muted">'.$comm['desc_commentaire'].'</label>'.
'<p>'.
'<a href="">'.'@'.$comm['login'].'</a>'.
'<p>'.
'<label>'.$comm['vote_commentaire'].' points'.'</label>'.
'<p>'.
'<input type="text" value="'.$comm['no_commentaire'].'" id="no_commentaire"/>'.
'<button class="btn btn-default" name="up" id="up">+</button>'.
' '.
'<button class="btn btn-default" name="down" id="bold" onclick="downvote()">-</button>'.
'<p>'.
'<hr/>';
}
?>
我希望这很容易理解。任何帮助将不胜感激,我已经坚持了一会儿。非常感谢。
答案 0 :(得分:0)
首先,您不能多次声明id
。 ID应该是唯一的。您可以将ID传递给HTML属性。
你的循环:
<?php
while($comm = mysqli_fetch_array($res2))
{
echo
'<label class="text-muted">'.$comm['desc_commentaire'].'</label>'.
'<p>'.
'<a href="">'.'@'.$comm['login'].'</a>'.
'<p>'.
'<label>'.$comm['vote_commentaire'].' points'.'</label>'.
'<p>'.
'<input type="text" value="'.$comm['no_commentaire'].'"/>'.
'<button class="btn btn-default btn-up" data-id="'.$comm['no_commentaire'].'">+</button>'.
' '.
'<button class="btn btn-default btn-down" data-id="'.$comm['no_commentaire'].'">-</button>'.
'<p>'.
'<hr/>';
}
?>
你的剧本:
<script type="text/javascript">
$(document).ready(function() {
$("button.btn-up").click(function() {
var varno_commentaire = $(this).data('id');
$.ajax({
url: "upvoteCommentaire.php",
type: "POST",
data: {
no_commentaire: varno_commentaire
},
async: false,
success: function(result) {
alert(result);
}
});
});
});
</script>
答案 1 :(得分:0)
ID
只能在整个页面上使用一次。在您的情况下,PHP的while
循环中的每个元素都具有相同的ID。因此,当您通过$("#no_commentaire").val()
获取元素的值时,它会使第一个元素的值忽略页面上的其余元素。
您的问题的解决方案是拥有class
而不是ID
元素,并通过jQuery中parent
child
的相关性访问相同的元素。因此,您只能获得所选/点击的部分的值。
您的PHP代码看起来像这样,
<?php
while($comm = mysqli_fetch_array($res2))
{
echo
'<div class="parent-class">'.
'<label class="text-muted">'.$comm['desc_commentaire'].'</label>'.
'<p>'.
'<a href="">'.'@'.$comm['login'].'</a>'.
'<p>'.
'<label>'.$comm['vote_commentaire'].' points'.'</label>'.
'<p>'.
'<input type="text" value="'.$comm['no_commentaire'].'" class="no_commentaire"/>'.
'<button class="btn btn-default up" name="up">+</button>'.
' '.
'<button class="btn btn-default" name="down" id="bold" onclick="downvote()">-</button>'.
'<p>'.
'</div>'.
'<hr/>';
}
?>
和jQuery代码看起来像这样,
<script type="text/javascript">
$(document).ready(function() {
$(".up").click(function() {
var varno_commentaire = $(this).parent().child(".no_commentaire").val();
$.ajax({
url: "upvoteCommentaire.php",
type: "POST",
data: {
no_commentaire: varno_commentaire
},
async: false,
success: function(result) {
alert(result);
}
});
});
});
</script>