从python cgi执行Javascript的问题

时间:2010-12-08 11:58:16

标签: javascript python cgi

我在服务器上运行Python程序并希望提供客户端接口。我正在使用一个简单的Web服务器(来自O'Reilly Programming Python书籍)。

我可以毫无问题地生成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

看起来好像python正在尝试执行JavaScript。如果我创建一个包含生成的html代码(包括JavaScript)的静态html页面,那么一切正常。

3 个答案:

答案 0 :(得分:3)

您的Web服务器认为FormChecks.js是作为CGI脚本执行的,当然不是。将其移至cgi-bin/之外,并相应地更改script代码中的路径。您也可以尝试从中删除可执行位。

答案 1 :(得分:0)

那些反对的内容是什么?

错误似乎只是在结束三重报价结尾处有一个额外的单引号。

答案 2 :(得分:0)

首先。感谢大家花时间回答 -

我不得不进行所有后退操作,否则Stack Overflow将无法显示我的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]代码404,消息没有这样的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之前错过了“/”。

感谢所有建议 - 现在解决下一个问题: - )