Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击按钮时,不会传递数据库中的php值_Javascript_Php_Jquery - Fatal编程技术网

Javascript 单击按钮时,不会传递数据库中的php值

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和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'>".
            "<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吗?是这样吗?是的,这就是我想做的。哈哈,我不知道怎么做