Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.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
与Python服务器对话的HTML页面_Python_Html - Fatal编程技术网

与Python服务器对话的HTML页面

与Python服务器对话的HTML页面,python,html,Python,Html,我有一个管理Raspberry Pi的GPIO Pin的web服务器,但当我启动服务器时,我必须在div上单击两次以启动led 有什么问题吗?这是我为管理led而编写的html页面的代码 <script> function onoff(led) { var xmlhttp; var v = document.getElementById("input_" + led).value; if (window.XMLHttpRequest) { xmlhttp=new XML

我有一个管理Raspberry Pi的GPIO Pin的web服务器,但当我启动服务器时,我必须在div上单击两次以启动led

有什么问题吗?这是我为管理led而编写的html页面的代码

<script>

function onoff(led) {

var xmlhttp;
var v = document.getElementById("input_" + led).value;

if (window.XMLHttpRequest) {
    xmlhttp=new XMLHttpRequest();
}
else {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function() {

    if (xmlhttp.readyState==4 && xmlhttp.status==200)   {

        if (v == 'on'){
            document.getElementById("input_" + led).value = 'off';
            document.getElementById("par_lamp").innerHTML = "<img class='lampadina' src='http://192.168.1.91:8080/lampadina_on.png'  alt='lampadina' height='198' width='120'>";
        }
        else{
            document.getElementById("input_" + led).value = 'on';   
            document.getElementById("par_lamp").innerHTML = "<img class='lampadina' src='http://192.168.1.91:8080/lampadina_off.png'  alt='lampadina' height='198' width='120'>";
        }
    }

}
xmlhttp.open("GET","http://192.168.1.91:8080/remote.html?led=" + led + "&action=" + v,true);
xmlhttp.send();

}

功能开启关闭(led){
var-xmlhttp;
var v=document.getElementById(“输入”+led).value;
if(window.XMLHttpRequest){
xmlhttp=新的XMLHttpRequest();
}
否则{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
如果(v==‘开’){
document.getElementById(“输入”+led)。值='off';
document.getElementById(“par_lamp”).innerHTML=“”;
}
否则{
document.getElementById(“输入”+led)。值='on';
document.getElementById(“par_lamp”).innerHTML=“”;
}
}
}
open(“GET”http://192.168.1.91:8080/remote.html?led=“+led+”&action=“+v,真);
xmlhttp.send();
}



要调试这些东西,您应该查看浏览器中的开发工具。所有浏览器都允许您单步浏览代码,以查看到底发生了什么。 在这种情况下,您的流程如下所示:

<div  id="input_11" class="button" onclick="onoff(11)"  value="off">

Div以值“off”开头。如果单击此代码,则会执行以下操作:

var v=document.getElementById(“输入”+led).value; open(“GET”、“led+”和action=“+v,true”); 然后将“value”的初始值“off”发送到服务器。 只是后来它将其切换为“开”,以便下次单击时它实际上会发送开

因此,您需要在发送命令之前切换当前状态,或者需要将初始状态设置为“开”,以便第一次单击发送正确的命令


xmlhttp.onreadystatechange=function(){
…中的代码将仅在
xmlhttp.send()之后运行
因为它是绑定到
xmlhttp

的事件处理程序函数,所以我尝试将div的状态更改为on,但不起作用。我将div的值标记更改为on,对吗?每次我第一次启动程序时,var v都是未定义的
<div  id="input_11" class="button" onclick="onoff(11)"  value="off">