如何在javascript中为给定函数编写等效的php函数?

时间:2013-07-16 08:01:54

标签: php javascript function dynamic

我有这个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中,因为我在执行函数方面遇到了一些问题。

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

您可以将按钮转换为anchor标记,然后将按钮ID添加到href网址。但是这会重新加载页面,但你会有一个PHP解决方案。显然,alert没有PHP函数。

答案 2 :(得分:0)

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

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

结果如下,并按预期工作。因此,如果它不适合你,那么这四个变化中的一个可能包含你做错的线索。

<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>

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

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