Javascript 单击按钮时,不会传递数据库中的php值
因此,我的大部分php和jquery都能正常工作,但我目前在一件事上遇到了困难,那就是如何在单击按钮时在while循环中将db值传递给jquery?目前没有印刷任何东西Javascript 单击按钮时,不会传递数据库中的php值,javascript,php,jquery,Javascript,Php,Jquery,因此,我的大部分php和jquery都能正常工作,但我目前在一件事上遇到了困难,那就是如何在单击按钮时在while循环中将db值传递给jquery?目前没有印刷任何东西 <?php ... if(mysqli_num_rows($result)){ while($row = mysqli_fetch_assoc($result)){ print "<div class='item col-xs-4 col-lg-4'>".
<?php
...
if(mysqli_num_rows($result)){
while($row = mysqli_fetch_assoc($result)){
print
"<div class='item col-xs-4 col-lg-4'>".
"<div class='row'>".
"<div class='col-xs-10'>".
"<p class='list-group-item-text'>".
"<input type='text' class='form-control' id='usr'>".
"<button id='button' class='btn btn-success'>Calculate</button>".
"</div>".
"</div>".
"</div>";
}
}
?>
<script type="text/javascript">
$(document).on("click", "#button", function(){
var name = '<?php echo($row['name']); ?>';
alert(name);
});
</script>
尝试以下操作
if(mysqli_num_rows($result)){
$i = 0;
while($row = mysqli_fetch_assoc($result)){
print
"<div class='item col-xs-4 col-lg-4'>".
"<div class='row'>".
"<div class='col-xs-10'>".
"<p class='list-group-item-text'>".
"<input type='text' class='form-control' id='usr_" . $i . "'>".
"<button id='button_" . $i . "' class='btn btn-success'>Calculate</button>".
"</div>".
"</div>".
"</div>";
$i ++;
}
}
if(mysqli\u num\u行($result)){
$i=0;
while($row=mysqli\u fetch\u assoc($result)){
打印
"".
"".
"".
“”。
"".
“计算”。
"".
"".
"";
$i++;
}
}
好的,我们需要改变一些事情。HTMLDOM中的每个元素都需要一个唯一的id。如果多个元素具有相同的id,那么机器会非常混乱。这是可以理解的,因为你的意思是“嘿,注意带id按钮的按钮!”!就像,哪一个?有7个。在循环过程中,我们可以使用循环从db获取的当前行的id为每个按钮添加唯一的id。注意,在HTML中,元素ID不能以数字开头。这就是为什么我用了45号按钮等等
我们还可以将侦听器更改为侦听一类按钮,而不是特定的按钮-这样,如果页面上具有正确类的任何按钮被单击,侦听器就会听到它。使用jQuery,您还可以直接向元素添加数据,而retrieve使用的是.data()。我在javascript中提供了两个变量,因此您可以看到每种方法的结果
<?php
...
if(mysqli_num_rows($result)){
$i = 0;
while($row = mysqli_fetch_assoc($result)){
print
"<div class='item col-xs-4 col-lg-4'>".
"<div class='row'>".
"<div class='col-xs-10'>".
"<p class='list-group-item-text'>".
"<input type='text' class='form-control' id='usr-".$row['id']."'>".
"<button id='button-".$row['id']."' data-id='".$row['id']."' class='btn btn-success btn_calc'>Calculate</button>".
"</div>".
"</div>".
"</div>";
}
$i++;
}
?>
<script type="text/javascript">
$(document).on("click", ".btn_calc", function(){
var id_only = $(this).data('id'); //this gets us the id
//you can log values to the console, then right-click and inspect to see the results:
console.log("id_only = ",id_only);
//this gets the text into a variable
var text = $('#usr-'+id_only).val();
console.log("text = ", text);
//alert(text);
});
</script>
您遇到的问题是您试图以字符串格式传递数据。
在脚本中,您将$row out of while循环传递出去,这样它就不会传递任何对您有用的内容。若有多个按钮,则不能使用ID属性,但必须使用类。设置数据id属性,以便可以从数据库传递值,并将id设置为输入,以便也可以获取其值。试试这个:
<?php
if(mysqli_num_rows($result)){
while($row = mysqli_fetch_assoc($result)){
print
"<div class='item col-xs`-4 col-lg-4'>".
"<div class='row'>".
"<div class='col-xs-10'>".
"<p class='list-group-item-text'>".
"<input type='text' class='form-control' id='input-" . $row["id"] . "'>".
"<button data-id='". $row["id"] . "' class='mybutton btn btn-success'>Calculate</button>".
"</div>".
"</div>".
"</div>";
}
}
?>
<script type="text/javascript">
$(document).ready(function(){
$(".mybutton").on("click", function(){
var myid = $(this).attr('data-id');
var myinput = $('#input-'+myid).val();
alert("MY ID IS: " + myid);
alert("MY INPUT VALUE IS: " + myinput);
});
});
</script>
每个按钮都需要一个唯一的id。html中的所有id都必须是唯一的。对不起,伙计,我该怎么做?我对web开发完全陌生var name=''代码>–这不会输出任何东西(除了错误消息,如果您启用了它们的话–您应该立即执行这些操作;它们是一个有价值的工具,可以帮助您找出开发过程中的错误)。while循环结束,因为处理完最后一条记录后,mysqli\u fetch\u assoc
将返回NULL–因此您试图在此处输出NULL的name
条目,这当然不存在。这不是javascript,不是jquery吗?因此jquery是javascript,它只是一个由它构建的特定库。您已将事件侦听器编写为jQuery侦听器,因此我假设您正在使用jQuery。不是这样吗?你是否有一个jQuery版本的链接?是的,我正在使用jQuery。不过我有两个问题。1.按照您的方法,如果该按钮上的名称id为45
,会发生什么情况?我从数据库中获取这些值。2.它会打印一个警报按钮2,而不是一个有效的id,比如说45Oh,明白了。那么,我们可以通过使用$row['id']在循环中获取该id吗?是这样吗?是的,这就是我想做的。哈哈,我不知道怎么做