因此,我目前正致力于使用Arduino +以太网屏蔽的家庭自动化项目,该屏蔽用作Web服务器。 Arduino上的网页使用基本的Ajax发送请求,而无需刷新页面或在URL后添加任何内容。
这是脚本:
<script type="text/javascript">
function GetArduino(url) {
var request = new XMLHttpRequest();
request.open("GET", url , false);
request.send();
}
</script>
在HTML页面中,我使用以下命令发送请求:
<a href="javascript:GetArduino('?L=36')" class="op"></a>
然后我读出Arduino上的HTTP请求并使用&#34; L = XX&#34;用于激活我家中正确灯光或百叶窗的代码。
现在出现问题:
在我的iPhone上使用网页时,每个HTTP请求都会连续发送3次。这导致我的灯亮 - &gt;关闭 - &gt;在我的iPhone上使用Safari时打开。在同一台设备上使用Chrome时,情况并非如此。
HTTP请求在Arduino上看起来像这样(3次):
new client
GET /?L=29 HTTP/1.1
Host: 192.168.1.177
Referer: http://192.168.1.177/
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-us
Connection: keep-alive
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D167 Safari/9537.53
我还注意到Chrome第一次加载页面时会做同样的事情(三重HTTP请求)。在那之后,一切都很好。
我不是编程方面的专家,所以我可能会忽略一些明显的东西吗?
答案 0 :(得分:1)
好的,这很令人尴尬......结果我 忽略了一些明显的东西!
在搜索解决方案几天(和晚上!)之后,我决定在这里试试运气的那一刻,我找到了解决方案。
显然我不得不承认Arduino代码中的请求:
client.println("HTTP/1.1 200 OK");
client.println();
仍然很奇怪,不同的浏览器/设备处理不同的方式。