проблема выполнения Javascript из Python CGI - PullRequest
1 голос
/ 08 декабря 2010

Я запускаю программу Python на сервере и хочу предоставить интерфейс на стороне клиента. Я использую простой веб-сервер (из книги 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

Похоже, что питон пытается выполнить JavaScript. Если я создаю статическую html-страницу, содержащую сгенерированный html-код (включая JavaScript), все работает нормально.

Ответы [ 3 ]

3 голосов
/ 08 декабря 2010

Ваш веб-сервер считает, что FormChecks.js предназначен для выполнения в виде CGI-скрипта, что, конечно, не так. Переместите его за пределы cgi-bin/ и измените путь в вашем теге script соответственно. Вы также можете попробовать удалить из него исполняемый бит.

0 голосов
/ 08 декабря 2010

Во-первых.Спасибо всем, что нашли время ответить -

Мне пришлось, но все обратные пометки, иначе переполнение стека не отобразило бы мой HTML-код.

Если я удалю FormCheck.js изиз каталога cgi-bin я получаю от веб-сервера следующее:

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.

Спасибо за все предложения по поводу решения следующей задачи: -)

0 голосов
/ 08 декабря 2010

Для чего все эти обратные пометки?

Ошибка, похоже, просто в том, что у вас есть дополнительная одинарная кавычка в конце вашей закрывающей тройной кавычки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...