2015-02-06 55 views
0

我有一個使用Atmel嵌入式處理器的簡單Web服務器。這是一個Cortex M4,它只是將FreeRTOS作爲操作系統運行;這不是一個高性能的處理器。嵌入式處理器網絡服務器;將信息從browwer傳遞到服務器

我可以有它[愛特梅爾處理器]在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

消息到愛特梅爾處理器。否則,我會收到一條超時消息。我可以高興地再次發回原始頁面,它本質上工作,但發回頁面重置下拉框已經改變的值。

有沒有辦法使瀏覽器發送消息,服務器可以解析,但不必發送整個頁面?我想我需要使用類似POST命令的東西,但我不知道如何從網頁上執行此操作。我應該說我對C有經驗,但是除了我在過去幾天學到的知識以外,沒有任何HTML知識,所以這可能是一件容易的事情,它可以讓我從本週的所有學習中完全擺脫困境!

我不想/假設我不能使用Javascript,因爲我有這樣一個簡單的服務器,我需要保持它儘可能簡單。

謝謝!

回答

1

有沒有辦法使瀏覽器發送消息,服務器可以解析,但不必發送整個頁面?

忘掉瀏覽器。

服務器是否響應204 No Content響應而不是200 OK響應。

如果客戶端是用戶代理,它不應該改變其導致請求被髮送的文檔視圖。儘管任何新的或更新的元信息都應該應用於當前用戶代理活動視圖中的文檔,但該響應主要是爲了允許在不改變用戶代理的活動文檔視圖的情況下進行操作輸入。


我不想/以爲我無法使用JavaScript,因爲我有這樣一個簡單的服務器,我需要保持儘可能簡單。

JavaScript運行客戶端。你不需要服務器來做任何複雜的JS服務。你甚至可以將它嵌入到HTML文檔中。

可能使用Ajax來解決你的問題,而不是無內容響應。

+0

嗯,沒有內容的想法聽起來像一個燦爛的。我會盡快給你回報。謝謝! – DiBosco 2015-02-06 10:53:25

+0

這是一種享受,謝謝。 :) – DiBosco 2015-02-06 14:18:42