2010-12-08 39 views
1

我正在服務器上運行Python程序,並希望提供一個客戶端接口。我正在使用一個簡單的Web服務器(來自O'Reilly編程Python書籍)。從python執行Javascript的問題cgi

我可以生成沒有問題的HTML頁面。但是現在我想要生成一個頁面,其中包含一些JavaScript,以便在將客戶端返回到服務器上的python應用程序之前驗證客戶端上的用戶輸入。在Python代碼的問題部分是:

htmlcode = """ 
`<head`> ## Heading ## 
    `<title`>PAROT - Report Options`</title`> 
    `<script type="text/javascript" src="FormChecks.js"`> 
    `</script`> 

`</head`> 
`<body`> 
    `<form method=POST action="cgiRunQuery.py"`>"""' 

當我把這個給服務器,它抱怨:

tclogin1 - - [08/Dec/2010 10:55:02] "GET /cgi-bin/FormChecks.js HTTP/1.1" 200 - 
Traceback (most recent call last): 
    File "/usr/lib/python2.6/CGIHTTPServer.py", line 255, in run_cgi 
    os.execve(scriptfile, args, os.environ) 
OSError: [Errno 8] Exec format error 
tclogin1 - - [08/Dec/2010 10:55:02] CGI script exit status 0x7f00 

看起來好像蟒蛇正試圖執行JavaScript。如果我創建一個包含生成的html代碼(包括JavaScript)的靜態html頁面,它一切正常。

+0

你是如何「發送到服務器」? – 2010-12-08 12:15:09

回答

0

什麼是反引號?

該錯誤似乎只是您在結束三重報價結束時有額外的單引號。

+0

它們可能是向原始HTML生成引擎指示的字符在發送之前不應進行編碼的內容。 – 2010-12-08 12:14:00

3

你的網絡服務器認爲FormChecks.js是作爲一個CGI腳本來執行的,當然這不是。將其移動到cgi-bin/之外並相應地更改script標籤中的路徑。您也可以嘗試從它移除可執行位。

0

首先,感謝所有花時間回答 -

我不得不,但所有的後面滴答或否則堆棧溢出不會顯示我的HTML代碼。

如果我從cgi-bin目錄中刪除FormCheck.js,我從網絡服務器執行以下操作:

tclogin1 - - [08/DEC/2010 12時42分17秒]「POST/CGI- bin/cgiGetReportOptions.py HTTP/1.1「200 - tclogin1 - - [08/Dec/2010 12:42:17] code 404,message沒有這樣的CGI腳本('/cgi-bin/FormChecks.js') tclogin1 - - [08/DEC/2010 12時42分17秒] 「GET /cgi-bin/FormChecks.js HTTP/1.1」 404 -

服務器看到

<script type="text/javascript" src="FormChecks.js"> 

由於某種原因試圖運行JavaScript文件作爲CGI腳本

Arghhhhhhhhhhhhhhhhhhhh !!!

我周圍的一些更多的發揮和問題是:

<script type="text/javascript" src="/FormChecks.js"> 

我錯過了「/」前FormChecks.js。

感謝您的所有建議 - 現在解決下一個問題:-)

+3

這是一條評論。請不要用評論「回答」你自己的問題。只需更新原件。 – 2010-12-08 14:18:31