我有一个链接,当页面被调用或刷新时,它会运行。
由于这设置为在单击时执行,因此不应发生这种情况。
我偷偷地怀疑,因为我href
将路径留空,所以可能会导致问题,但添加文件位置不会改变结果。
<a href="" onClick="<?php exec('sudo python /var/www/html/lightson.py'); ?>"><img src="lightm.png" width="128" height="128"></a>
您在这里混合了客户端和服务器端代码。都每当呈现您的页面时,都会对 PHP 进行评估(除非有一个像 if
语句这样的控制结构来阻止它的存在)。
您只能将 JavaScript 放在 onclick
事件中。如果要在单击元素时触发服务器端代码,则需要使用 AJAX。
编辑:我想给@Chris一些功劳,因为他在他的回答中很好地指出了一个关键点:你在这里混合了客户端和服务器端代码。他还证实了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
});
}