我有这个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中,因为我在执行函数方面遇到了一些问题。
答案 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?我们无从得知。 从您给我们的内容开始,我对您的代码进行了一些更改:
结果如下,并按预期工作。因此,如果它不适合你,那么这四个变化中的一个可能包含你做错的线索。
<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调用替换。