我在Atmel嵌入式处理器上安装了一个简单的Web服务器。它是Cortex M4,它只运行FreeRTOS作为操作系统;这不是一个高功率的处理器。
我可以让它[Atmel处理器]通过键入Firefox来提供页面:
192.168.0.200
这将呈现一个带有下拉框的页面和一个提交按钮,使我能够将数据传递回服务器以控制硬件。
我正在使用以下类型的HTML。请注意,它看起来有点奇怪,因为它在C字符串中:
"<form> \
<select name=\"group\"> \
<option value=\"10\">10</option> \
<option value=\"11\">11</option> \
<option value=\"12\">12</option> \
<option value=\"Broadcast\">255</option> \
</select> \
<input type=\"submit\" value=\"Submit\"> \
</form>"
您可以看到,在地址栏中,浏览器的内容如下:
192.168.0.200/?group=4
当emebedded处理器上的Web服务器收到该消息时,我可以愉快地解析该行,提取一个组号并对其进行操作。
但是,当我拿到
时,我必须将另一个页面发送回浏览器192.168.0.200/?group=4
消息进入Atmel处理器。否则我收到超时消息。我可以愉快地再次发送原始页面,它基本上可以工作,但发送页面会重置下拉框已更改为的值。
有没有办法让浏览器发送服务器可以解析的消息,但不必再发送整页?我想我需要使用像POST命令这样的东西,但我不知道如何从网页上做到这一点。我应该说我在C方面经验丰富,但除了我在过去几天学到的知识之外没有任何HTML知识,所以它可能很容易让我完全避免在本周的所有这些学习中填饱肚子!
我不想/假设我无法使用Javascript,因为我需要这么简单的服务器,以保持尽可能简单。
谢谢!
答案 0 :(得分:1)
有没有办法让浏览器发送服务器可以解析的消息,但不必再发送整页?
忘记浏览器。
让服务器回复204 No Content
响应,而不是200 OK
响应。
如果客户端是用户代理,则它不应该从导致请求发送的文档视图中更改其文档视图。此响应主要是为了允许在不导致更改用户代理的活动文档视图的情况下进行操作的输入,尽管任何新的或更新的元信息应该应用于当前在用户代理的活动视图中的文档。
我不想/假设我不能使用Javascript,因为我有这么简单的服务器,我需要尽可能简单。
JavaScript运行客户端。您不需要服务器执行任何复杂的服务JS。您甚至可以将其嵌入HTML文档中。
您可以使用Ajax来解决您的问题,而不是无内容响应。