与Python服务器对话的HTML页面
我有一个管理Raspberry Pi的GPIO Pin的web服务器,但当我启动服务器时,我必须在div上单击两次以启动led 有什么问题吗?这是我为管理led而编写的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
<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">