Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将python cgi脚本的结果发送到HTML_Javascript_Python_Html_Cgi - Fatal编程技术网

Javascript 将python cgi脚本的结果发送到HTML

Javascript 将python cgi脚本的结果发送到HTML,javascript,python,html,cgi,Javascript,Python,Html,Cgi,我在“index.html”页面上有一个切换按钮。当我点击它时,它会执行一个python cgi脚本,该脚本会改变我的raspberry上某些东西的状态 为此,我采取以下措施: HTML: <form id="tgleq" method="POST" action="/cgi-bin/remote.py" target="python_result"> <input id="toggle-eq" type="checkbox" data-toggle="toggle" nam

我在“index.html”页面上有一个切换按钮。当我点击它时,它会执行一个python cgi脚本,该脚本会改变我的raspberry上某些东西的状态

为此,我采取以下措施:

HTML:

<form id="tgleq"  method="POST" action="/cgi-bin/remote.py" target="python_result">
<input id="toggle-eq" type="checkbox" data-toggle="toggle" name="toggle-eq" value="">

<script>
$(function() {
  $('#toggle-eq').change(function() {
    tgl_state = $('#toggle-eq').prop("checked")
    var toggle = document.getElementById("toggle-eq");
    toggle.value = tgl_state;
    document.getElementById("tgleq").submit();
  })
})
</script>
#!/usr/bin/env python

import cgi
import cgitb

cgitb.enable()

print "Content-type: text/html\n\n"
print

form=cgi.FieldStorage()
arg1 = form.getvalue('toggle-eq')
然后我用arg1做我想做的事

现在,我想要的是,当您打开web界面页面时,获取raspberry组件的状态,以便在正确的位置初始化切换

为此,我在页面加载时发送一个表单,启动一个查看组件状态的脚本。但是我怎样才能在html中找回它呢

我尝试过使用httplib2,但没有任何效果。。。有什么建议吗


谢谢

如果我正确理解了您的问题,您希望在网页上显示可切换组件的当前状态。 目前看来,您有一个纯HTML页面和一个CGI页面,所以我认为您有多个选项,其中之一是将HTML和CGI组合成一个页面

下面的代码就是这个想法的一个例子,可能无法正常工作,因此不是复制/粘贴解决方案

#!/usr/bin/env python
import cgi
import cgitb

cgitb.enable()
print "Content-type: text/html\n\n"
print
active="""
<form id="tgleq"  method="POST" action="/cgi-bin/remote.py" target="python_result">
<input id="toggle-eq" type="checkbox" data-toggle="toggle" name="toggle-eq" value="">
"""
inactive="""
<form id="tgleq"  method="POST" action="/cgi-bin/remote.py" target="python_result">
<input id="toggle-eq" type="checkbox" data-toggle="toggle" name="toggle-eq" value="checked">
"""
generic = """
<script>
$(function() {
  $('#toggle-eq').change(function() {
    tgl_state = $('#toggle-eq').prop("checked")
    var toggle = document.getElementById("toggle-eq");
    toggle.value = tgl_state;
    document.getElementById("tgleq").submit();
  })
})
</script>
"""

def set_state(option):
    if (option==True):
        actual_state_Setting_here = 1 # <-magic happens here
    else:
        actual_state_Setting_here = 0 # <-magic happens here

def get_state():
    return actual_state_Setting_here # <- read actual value here

form = cgi.FieldStorage()
if ( form.getvalue('toggle-eq')=="checked" ):
    set_state(True)
else:
    set_state(False)

if ( get_state()==True ):
    print(active) #show as currently active
else:
    print(inactive) #show as currently inactive
print(generic) #show rest of the page
#/usr/bin/env python
导入cgi
进口cgitb
cgib.enable()
打印“内容类型:text/html\n\n”
打印
active=“”
"""
不活动的“”
"""
泛型“”
$(函数(){
$('#toggle eq')。更改(函数(){
tgl#U状态=$('#切换eq').prop(“选中”)
var toggle=document.getElementById(“toggle eq”);
toggle.value=tgl_状态;
document.getElementById(“tgleq”).submit();
})
})
"""
def设置_状态(选项):
如果(选项==True):

实际状态设置这里=1,你为什么要用这些?你需要充当服务器,而不是客户端。对不起,我不明白你的意思。。。服务器应该是什么?谢谢你的回复。事实上,这可能是一个很好的方法。但我担心我的网页代码将来需要更复杂一点,并且很难将其转换为python脚本。你认为相反的情况可能吗?这是一个快速而基本的例子,你可以更清晰地构造所有东西,这样它就可以维护了。如果你用其他语言写,你也会遇到同样的问题。Python结构紧凑、简洁,非常适合这样做。构建一些用于切换内容的基本脚本,将它们作为REST服务,其余的可以是纯HTML和javascripts组合。