我有一个链接,当调用或刷新页面时,它会运行。
由于设置为执行onclick,因此不应该发生这种情况。
我有一种潜在的怀疑,因为我在href
中将路径留空可能导致问题,但添加文件位置并不会改变结果。
<a href="" onClick="<?php exec('sudo python /var/www/html/lightson.py'); ?>"><img src="lightm.png" width="128" height="128"></a>
答案 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
});
}