按钮执行jQuery脚本,使用jQuery的? - javascript

我正在RaspberryPi上建立一个网站。我有JustGage读取温度和其他传感器,并显示它们已经实时工作。但是现在,我试图创建一个按钮,当按下该按钮时,它会执行python脚本。

因此,这是一个简单的按钮:

<form method="post">
  <button id="led" name="led" checked data-toggle="toggle">▲</button>
</form>

现在,当按下此按钮时,我想让它执行python脚本LED.py:

import os
import smbus
import time
import datetime
import os, sys
rom datetime import datetime
import pytz
import datetime


states = open('/home/pi/Desktop/UV.txt', 'r+')
on=open('/home/pi/Desktop/on.txt', 'r+')
    os.system('sudo /drcontrol/drcontrol.py -d DAE001XA -r 3 -c state | tee /home/pi/Desktop/UV.txt')
state = states.readlines()
on = on.readlines()
state = str(state)
rstate= str(on)
    if (rstate == state):
        print ("Relay on!")
    else:
        print ("Relay Off!")

#--------------------
if (rstate != state):
    os.system('/drcontrol/drcontrol.py -d DAE001XA -r 3 -c on')
    print("on")
else:
    os.system('/drcontrol/drcontrol.py -d DAE001XA -r 3 -c off')
            print("off")

#------------------------------------------------------------------------------------
import os, sys

if os.popen('whoami').readline().strip() == 'root' :
    print( "OK, you're root")
    root = True
else:
    print( "Attention: please run as root with 'sudo'. This scripts GPIO which need root-rights.")
    print( "Now exiting ...")
    sys.exit(1)
    root = False

if __name__ == '__main__':
    main()
print ("Finished")

从终端运行时,此python脚本有效。当它关闭时,它将激活继电器,反之亦然。但是,当在index.php页面上按下按钮时,如何运行此脚本?最好使用Jquery或PHP(但我不希望页面重新加载),但不建议使用Flask。

还是有使用Bootstrap Switch或其他方法的简便方法?并且,使用继电器的当前状态作为开关的默认位置,该状态保存在“ /home/pi/Desktop/UV.txt”中?是否有关于此的清晰教程?

编辑1

python脚本on.py:
    导入操作系统

os.system('/drcontrol/drcontrol.py -d DAE001XA -r 3 -c on')
f=open("/var/www/test.txt", a+)

index.php上的按钮:

<button id="led">on</button>
<script>
  $("#led").click(function(){
    $.ajax({
      url:"/var/www/on.php",
    });
  });
</script>

最后是on.php:

<?php
  exec("sudo /usr/bin/python3.2 /var/www/on.py")
?>

在浏览器中打开php文件时,它仅显示内容,没有错误(我在.py和.php文件中都运行了chmod 777和chmod + x)。

单击按钮后,Chrome在开发人员模式下显示on.php为“ GET”。因此,该按钮有效,但是pythonscript没有运行。当我在sudo php var/www/on.php终端中对其进行测试时,它就像一个魅力。
我还缺少什么? www和www-data被添加到sudo'ers中。 apache也应该在其中吗?

参考方案

您需要调用一个页面,该页面调用可以设置cgi的脚本,或者调用.py脚本并直接将其命中的方法,或者您可以使用如下一行创建一个php页面

exec("python myscript.py arg1 arg2 ..."); 

然后按一下按钮即可转到该页面...

这些是几个选项,并假设服务器在树莓派上运行

如果我得到url(''),我该如何使用另一个URL - javascript

我是新手,正在写这篇文章,但是如果源上没有图像,那么我只有空白。有人可以告诉我,如果我正在获取背景图像,如何获取/images/no-image.jpg:url();这是我的代码:<div class="uk-clearfix uk-position-relative"> <div class="recipeb…

在JavaScript函数中转义引号 - javascript

我正在尝试将变量传递给javascript函数。根据用户的选择,它可以是文本或图像。这里已经讨论了类似的问题,但我无法解决。在php中,我这样编码:if ($choice == 1) { $img = '<img src = "../folder/'.$_SESSION["img"].'�…

如何在没有for循环的情况下在Javascript中使用Django模板标签 - javascript

我想在JavaScript中使用模板变量:我的问题是在javascript代码中使用for循环,for循环之间的所有事情都会重复..但我不想要....下面粘贴了我的代码..有人可以告诉我更好的方法吗这..因为这看起来很丑..这是我的代码: {% block extra_javascript %} <script src="/static/js…

使用JS和PHP更改弹出窗口背景图像 - javascript

我有一个JS函数:function zoom(now) { document.getElementById("popup").style.display = "block"; document.getElementById("photos").style.backgroundImage = …

打印二维阵列 - javascript

我正在尝试打印子元素。在this example之后。怎么做?。$myarray = array("DO"=>array('IDEAS','BRANDS','CREATIVE','CAMPAIGNS'), "JOCKEY"=>a…