OnClick激活页面加载/刷新

时间:2016-04-24 18:58:02

标签: php html

我有一个链接,当调用或刷新页面时,它会运行。

由于设置为执行onclick,因此不应该发生这种情况。

我有一种潜在的怀疑,因为我在href中将路径留空可能导致问题,但添加文件位置并不会改变结果。

<a href="" onClick="<?php exec('sudo python /var/www/html/lightson.py'); ?>"><img src="lightm.png" width="128" height="128"></a>

2 个答案:

答案 0 :(得分:3)

您在此处混合客户端和服务器端代码。 所有 PHP将在您的页面呈现时进行评估(除非有一个像if语句这样的控制结构来阻止它出现。)

您只能将JavaScript放入onclick事件中。如果要在单击元素时触发服务器端代码,则需要使用AJAX。

答案 1 :(得分:2)

编辑:我想对@Chris表示赞赏,因为他很好地指出了一个关键点in his answer您正在混合客户端和服务器端代码。他还确认了PHP代码如何执行的事实,无论我将其称为下面的假设和猜测,当然,事实证明它是真实的。

以下是我的原始答案:

我没有使用exec函数的经验,但不知怎的,我的直觉告诉我无论HTML文档中的位置如何都会执行。实际上,它就像PHP中的任何函数一样,实际上并不需要在HTML文件中正确格式化它,它无论如何都会运行(好吧,除非它被注释掉),所以这就是它每次调用的原因,我想。 ..

如果您使用AJAX或其他方式来加载外部文件,而不是PHP调用(服务器),那么考虑到您正在使用返回click事件处理程序代码(客户端)的onclick,这是最好的。

示例:

<a href="" onClick="myFunc()"><img src="lightm.png" width="128" height="128"></a>

AJAX电话:

function myFunc() {
  $.ajax({
    url: "/var/www/html/lightson.py",
    // rest of the AJAX magic
  });
}