2010-12-08 13 views
1

Ich bin ein Python-Programm auf einem Server ausgeführt und möchten eine clientseitige Schnittstelle bereitstellen. Ich benutze einen einfachen Webserver (aus dem O'Reilly Programming Python Buch).Problem beim Ausführen von Javascript aus einem Python CGI

Ich kann HTML-Seiten ohne Probleme generieren. Jetzt möchte ich jedoch eine Seite erzeugen, die etwas JavaScript enthält, um Benutzereingaben auf dem Client zu validieren, bevor sie an die Python-Anwendung auf dem Server zurückgegeben werden. Der problematische Teil des Python-Code ist:

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

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

Als ich dies an den Server senden, es klagt:

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 

Es sieht aus, als ob der Python das JavaScript auszuführen versucht. Wenn ich eine statische HTML-Seite mit dem generierten HTML-Code (einschließlich JavaScript) erstelle, funktioniert alles einwandfrei.

+0

Wie geht es Ihnen "das Senden an den Server"? –

Antwort

0

Wozu dienen diese Backticks?

Der Fehler scheint einfach zu sein, dass Sie am Ende Ihres schließenden Triple-Quotes ein zusätzliches einfaches Angebot haben.

+0

Sie sind wahrscheinlich etwas, das einer primitiven HTML-Generierungsengine anzeigt, dass die Zeichen vor dem Senden nicht codiert werden sollten. –

3

Ihr Webserver denkt, dass FormChecks.js als CGI-Skript ausgeführt werden soll, was natürlich nicht der Fall ist. Verschieben Sie es außerhalb von cgi-bin/ und ändern Sie den Pfad in Ihrem script Tag entsprechend. Sie könnten auch versuchen, stattdessen das ausführbare Bit zu entfernen.

0

Erstens. Danke an alle, die sich die Zeit genommen haben, zu antworten-

Ich musste aber alle Backticks rein oder sonst würde Stack Overflow meinen HTML Code nicht anzeigen.

Wenn ich die FormCheck.js aus dem cgi-bin-Verzeichnis zu entfernen, erhalte ich die folgenden vom Webserver:

tclogin1 - - [08/Dec/2010 12.42.17] „POST/cgi bin/cgiGetReportOptions.py HTTP/1.1 "200 - tclogin1 - - [08/Dez/2010 12:42:17] Code 404, Nachricht Kein solches CGI-Skript ('/cgi-bin/FormChecks.js') tclogin1 - - [08/Dec/2010 12.42.17] "GET /cgi-bin/FormChecks.js HTTP/1.1" 404 -

Der Server ist zu sehen die

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

und aus irgendeinem Grund versuchen, die Javascript-Datei als CGI-Skript zu starten

Arghhhhhhhhhhhhhhhhhhhh !!!

Ich habe um etwas mehr gespielt und das Problem war:

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

Ich war der "/" vor FormChecks.js fehlt.

Vielen Dank für alle Vorschläge - auf die Lösung des nächsten Problems jetzt :-)

+3

Dies ist ein Kommentar. Bitte beantworten Sie Ihre eigene Frage nicht mit einem Kommentar. Aktualisieren Sie einfach das Original. –

Verwandte Themen