2010-12-08 96 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