【问题标题】:problem executing Javascript from a python cgi从 python cgi 执行 Javascript 的问题
【发布时间】:2011-05-22 04:34:12
【问题描述】:

我在服务器上运行 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 页面,一切正常。

【问题讨论】:

  • 你是如何“发送到服务器”的?

标签: javascript python cgi


【解决方案1】:

这些反引号是干什么用的?

错误似乎只是您在结束三引号的末尾有一个额外的单引号。

【讨论】:

  • 它们可能是为了向原始 HTML 生成引擎指示字符在发送之前不应被编码。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    我必须输入所有反引号,否则 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 脚本运行

    啊啊啊啊啊啊啊啊啊!!!

    我又玩了一些,但问题是:

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

    我在 FormChecks.js 之前缺少“/”。

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

    【讨论】:

    • 这是一条评论。请不要用评论“回答”您自己的问题。只需更新原始版本。
    猜你喜欢
    • 2017-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多