与Python服务器通信的HTML页面

时间:2015-06-12 18:17:40

标签: 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 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();

}

</head>
<body>
    <center>
        <img src="http://192.168.1.91:8080/logo.png" alt="logo_sito" width:"198" height:"120">
    </center>

    <p align="center" id="par_lamp">
        <img class="lampadina" src="http://192.168.1.91:8080/lampadina_off.png"  alt="lampadina" height="198" width="120">
    </p>

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

1 个答案:

答案 0 :(得分:0)

要调试此类内容,您应该查看浏览器中的开发工具。所有浏览器都允许您逐步查看代码,以确切了解所发生的情况。 在这种情况下,您的流程如下:

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

Div以值'off'开头。如果单击代码确实:

var v = document.getElementById(“input_”+ led).value;    xmlhttp.open(“GET”,“Java deployment guide”+ led +“&amp; action =”+ v,true); 然后将“关闭”的初始值“off”发送到您的服务器。 只有在以后它才会将其切换为“打开”,以便下次点击它实际上会发送。

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

xmlhttp.onreadystatechange=function() {中的代码只会在xmlhttp.send()之后运行,因为它是绑定到xmlhttp的事件处理函数