-2

我有这个 PHP 代码来创建一个带有附加的 JavaScript 单击事件处理程序的按钮,以便在按下它时显示一个警报。

    <?php

    if(isset($_POST['take-attendance'])){
    $date = date("d/m");
    echo'<center><table><tr><th> Student-Id </th> <th> Name </th> <th>'.$date.'</th></tr>';

    foreach($sheet_data as $row) {

        echo '<tr><td>'.$row['id'].'</td><td>'.$row['name'].'</td><td> <input type = "button"  value = "A" name = "'.$row['id'].'" id = "'.$row['id'].'" class = "apbutton" ></td></tr>';

    }       
     echo '</table></center>';


     echo'<input type="button" name="mark-attendance" id="mark-attendance" value="Mark Attendance" class = "mark-attendance">';

    } 
    ?>
    <script>
    $(".apbutton").on("click", function() {
        var buttonId = $(this).attr("id");

        alert(buttonId);
    }); 

    </script>

现在我正在尝试用 PHP 编写相同的函数,因为我在进一步执行函数时遇到了一些问题。

4

3 回答 3

2

这是没有意义的。为什么要将 javascript 函数转换为 php 函数?

Javascript 是一种客户端脚本语言。当您在页面上使用 javascript 加载网站时,该 javascript 代码会通过您的客户端计算机或 Internet 浏览器运行,但是您想查看它。

当您为网站加载 php 脚本时,会在页面在客户端上呈现之前执行 php 代码。php 的目的是在远离用户的后端服务器上运行。没有办法从字面上翻译它。你能做的最好的就是在返回的输出中使用 php 输出 javascript 代码。

于 2013-07-16T08:05:09.670 回答
0

您可以通过将按钮转换为anchor标签并将按钮 ID 添加到 href url 来实现。然而,这会重新加载页面,但你会有一个 PHP 解决方案。显然没有用于alert.

于 2013-07-16T08:06:56.103 回答
0

我不知道您提供的代码片段是否就是您所拥有的。我假设不是。例如,什么是 $sheet_data?我们无从得知。从您给我们的内容开始,我对您的代码进行了一些更改:

  • 我为 $sheet_data 数组硬编码了一些值
  • 我添加了一些标签:html、head 和 body
  • 我添加了对 jquery 的引用
  • 我删除了 if 语句,因为您的代码段不包含有关如何填充此 post 变量的任何信息(没有表单,没有提交,...)

结果如下,并且确实按您的预期工作。因此,如果这四个更改之一不适合您,则可能包含您做错了什么的线索。

<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  </head>
  <body>
<?php

    $sheet_data[] = array('id' => 1, 'name' => 'Bart');
    $sheet_data[] = array('id' => 2, 'name' => 'Mark');
    $sheet_data[] = array('id' => 3, 'name' => 'Paul');

    date_default_timezone_set('Europe/Brussels');
    $date = date("d/m");
    echo'<center><table><tr><th> Student-Id </th> <th> Name </th> <th>'.$date.'</th></tr>';

    foreach($sheet_data as $row) {

        echo '<tr><td>'.$row['id'].'</td><td>'.$row['name'].'</td><td> <input type = "button"  value = "A" name = "'.$row['id'].'" id = "'.$row['id'].'" class = "apbutton" ></td></tr>';

    }       
     echo '</table></center>';


     echo'<input type="button" name="mark-attendance" id="mark-attendance" value="Mark Attendance" class = "mark-attendance">';


    ?>
    <script>
    $(".apbutton").on("click", function() {
        var buttonId = $(this).attr("id");

        alert(buttonId);
    }); 

    </script>
  </body>
</html>

就个人而言,我会将您的脚本块放在头标签之间,然后添加$( document ).ready(). 有关详细信息,请参阅http://learn.jquery.com/using-jquery-core/document-ready/

虽然您需要 ajax 将数据输入数据库是正确的,但您仍然需要捕获 click 事件作为触发器来启动 ajax 功能。它将alert(buttonId);被 ajax 调用替换的行。

于 2013-07-16T08:31:30.173 回答