2011-05-04 113 views
1

我開始在家庭服務器上實習,該家庭服務器能夠從網頁控制多重domotics設備。全球的想法是,只需點擊一下按鈕,服務器上就會產生一定的腳本並控制一個微控制器。每次單擊按鈕時執行CGI而不更改當前的html頁面

我的導師建立了一個簡單的網站,他給了我,使用AJAX來始終保持1頁上,並根據用戶的行爲(他們是隱藏的,如果不使用,如果使用帶回前)帶來的菜單。

我已經建立了一個Apache服務器,我配置執行CGI腳本,它的工作原理。 爲了始終保持在一個頁面上,我使用'204無內容'返回技巧,以便服務器對頁面的回答是'我沒有什麼可說的,只是留在這個頁面上'。

但我遇到的一個問題是CGI只啓動一次。如果我第一次點擊按鈕,它會起作用,之後沒有任何反應。

我試過使用SSI(shtml)來使用按鈕代碼,而不是使用FORM和GET方法,但腳本仍然不會執行兩次。

我可能會使用錯誤的工具。我應該繼續使用CGI嗎?或者還有其他的東西(比如AJAX,jQuery),其實際上是爲了我想要的?

感謝您的閱讀。

編輯:我找到了解決辦法(當我尋找答案,我去論壇,然後發現自己在接下來的一個小時內很好的解決方案,我總是當我絕望......) 我使用了一個基本的鏈接,出於某種原因,它具有與使用按鈕不同的行爲。隨你。我對所使用的技術的審問仍然站在:)

編輯2:我的解決方案是蹩腳的,由於某種原因,腳本也被稱爲在頁面刷新(或頁面加載的第一次)。這很奇怪,因爲它只在我點擊時纔會產生...

回答

0

熟悉jQuery和它的AJAX API。除非您使用AJAX,否則無法加載新頁面。下面是一個AJAX調用的示例:

$.ajax({ 
    url: 'http://server.domain.com/cgi-bin/myfile.cgi', 
    data: { 
     x: 1, 
     today: '20110504', 
     user: 'Joe' 
    } 
}).success(function(data, status, xhr) { 
    if (data) 
     alert(data); 
}); 

這是針對jQuery 1.5或更高版本的。您可以運行,每當某個按鈕被按下這樣的:

爲按鈕

HTML:

<input type="button" id="doThis"/> 

的JavaScript:

$(function() { 
    $('#doThis').click(function() { 
     //put AJAX sample shown above, here 
    }); 
}); 
+0

嗨麥克, 謝謝您的建議。我需要一段時間才能弄清楚如何使用html,javascript,AJAX和jquery,因爲我更專注於電子產品,但我想這裏有很好的tutos。 只有一件事:即使沒有使用'204無內容'技巧使用AJAX,我也可以不刷新頁面。但是,這只不過是一種黑客行爲,因爲我試圖做的是 - 我懷疑 - 不是所使用的技術。 – gqq 2011-05-04 12:39:09