2011-10-12 131 views
0

我想在網站上有一個「控制面板」,當按下按鈕時,我希望它在服務器(我的電腦)上運行命令。該面板將運行我寫的不同python腳本(每個按鈕一個腳本),並且我想在我的Mac,iPod touch和我的wii上運行面板。我看到的最好的方式是一個網站,因爲他們都有瀏覽器。有沒有一個JavaScript或什麼東西來在我的電腦上按下按鈕時運行命令?用瀏覽器運行命令

編輯:我聽說AJAX可能適用於基於服務器的事情,但我不知道該怎麼做。有沒有像'系統'塊或我可以使用的東西?

+0

這不就是[cgi](http://en.wikipedia.org/wiki/Common_Gateway_Interface)的全部內容嗎?使用XHR,表單get/post或者某個元素的src(如圖像,iframe或腳本元素)發送請求。隨你。 – RobG

回答

0

這裏有三個選項:

  1. 讓每個按鈕的隱藏字段提交表單與腳本的名稱。服務器將收到表單參數,然後可以分支運行相應的腳本。
  2. 讓每個按鈕都連接到它自己的唯一URL並使用按鈕上的javascript click來將window.location設置爲新的URL。您的服務器將收到該URL並可根據該URL決定要運行哪個腳本。你甚至可以在沒有javascript的網頁上使用鏈接。
  3. 使用Ajax向您的服務器發佈唯一的URL。這與前兩個選項基本相同(從服務器的角度來看)。主要區別在於Web瀏覽器不會更改它指向的URL。 ajax調用只是指示服務器做一些事情並返回一些數據,然後主機網頁可以做任何想做的事情。
+0

選項1看起來不錯,但我怎麼能這樣做?我對錶格不太擅長 – tkbx

0

在客戶端(瀏覽器),你可以用最簡單的方法做到這一點。只是一個HTML表單。 javascript會更好地驗證並執行ajax調用,因此頁面不必刷新。但你的主要焦點是在服務器上處理它。您可以使用您選擇的語言接收表單請求。如果你已經在運行python,你可以編寫一個超級快速的cgi python腳本。看看python的cgi模塊。你需要把它放到osx上的apache服務器上,如果那是你將要託管它的地方。 不幸的是,你關於如何編寫它的問題超出了簡單答案的範圍。但谷歌的如何寫和HTML格式,或看看也許jQuery建立一個快速的表單,可以輕鬆地進行ajax調用。 然後搜索如何使用python cgi模塊並接收POST請求。

0

Javascript基本上是爲了在瀏覽器中工作(通常爲最終用戶提供一些好看的東西)。你想要什麼(正如其他人已經說過的那樣)是一種將HTML表單動作連接到Web服務器「後端」上的動作的方式。這正是(正如RobG指出的)CGI的用途。 CGI是Apache用戶非常流行的一種替代方法,它是mod_python--不同之處在於「後端」操作是作爲獨立進程(CGI)還是在web服務器進程(mod_python)中運行,但對於大多數基本應用程序,服務器端腳本不需要關心。如果您處於共享主機環境中,您可能沒有選擇 - 請詢問您的系統管理員(或閱讀您的主機服務文檔),以瞭解如何在這種情況下最好地運行CGI腳本。

注意事項:

  1. 你可能需要以獲得一切設置你想要的方式相當升高的Web服務器管理員訪問&專業知識。您至少需要能夠(在權限和技術理解的意義上)查看您的Web服務器日誌,編輯您的Web服務器配置並跳出(重新啓動)您的http服務。

  2. 無論您希望完成的「後端」操作都將使用網絡服務器的權限/特權來完成,這可能與您通常用於執行這些操作的用戶帳戶的權限/權限不同。有很多方法可以解決這個問題(使用自定義守護進程和/或sudo操作),但是您真的需要對webserver sysadmin(如果Web服務器暴露給Big Bad Internet)有一個清楚的理解,瞭解它如何工作之前你部署了任何東西,否則你運行非常真實的風險(,尤其是,如果你是一個noob)會使黑客利用你的「命令網關」來破解網絡服務器。

當然,如果你只是在做這一切的樂趣在你的個人筆記本電腦正在(有關於這個問題的OSX的標籤,畢竟),然後是Web服務器的系統管理員,你隨時隨地學會一切,只要你不在網絡上,你就可以隨心所欲地開始學習一切你需要知道的事情。在這種情況下,您可能會發現this tutorial有用。