重复向Arduino Web服务器发出GET请求

时间:2014-08-10 16:36:25

标签: ajax get arduino

因此,我目前正致力于使用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请求)。在那之后,一切都很好。

我不是编程方面的专家,所以我可能会忽略一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

好的,这很令人尴尬......结果我 忽略了一些明显的东西!

在搜索解决方案几天(和晚上!)之后,我决定在这里试试运气的那一刻,我找到了解决方案。

显然我不得不承认Arduino代码中的请求:

            client.println("HTTP/1.1 200 OK");
            client.println();

仍然很奇怪,不同的浏览器/设备处理不同的方式。