Posts mit dem Label CGI werden angezeigt. Alle Posts anzeigen
Posts mit dem Label CGI werden angezeigt. Alle Posts anzeigen

Dienstag, 1. November 2011

CGI 001: Combining Javascript and CGI

I wrote a minimal example involving Javascript and CGI. Javascript only
<html>
<script type="text/javascript">
    function helloworld()
    {
        document.write("Hello World.");
    }
</script>
<body>
    <input type="button" value="Hello World." onClick="helloworld()">
</body>
</html>
</pre>
Including CGI:
<html>
<script type="text/javascript">
    function helloworld()
    {
        return true;
    }
</script>
<body>
    <form action="./hello.cgi" onSubmit="return helloworld()">
        <input type="submit" value="Hello World.">
    </form>
</body>
</html>
The CGI part in Python
#!/usr/bin/python
print "Content-type: text/plain\n\n"
print "Hello World."
The Javascript function is nothing but a pseudo-function. It does nothing, but control of flow does go through it, otherwise the form is not submitted to the CGI.
Important to note is that the CGI script access the element name property, not the ID.

Dienstag, 21. Juni 2011

Jmol 001: Loading a Structure File from Disk Through CGI

The function below allow the user to load a structure into a Jmol applet.
#!/usr/bin/python

print "Content-type: text/html\n\n"

import cgi
import cgitb
cgitb.enable()

def getJmolPage(target):
newpage = ''
newpage += '<html>\n'
newpage += ' <head>\n'
newpage += ' <title>Load PDB Form</title>\n'
newpage += ' <script src="./jmolDir/Jmol.js" type="text/javascript"></scri
pt>\n'
newpage += ' </head> \n'
newpage += ' <body> \n'
newpage += ' <script type="text/javascript">\n'
newpage += ' jmolInitialize("./jmolDir");\n'
newpage += ' jmolApplet(400, "load ../x_output/%s.pdb");\n'
newpage += ' </script><br />\n'
newpage += ' </body>\n'
newpage += '</html>\n'

return newpage % (target)

if __name__ == '__main__':
form = cgi.FieldStorage()
target = form['PDBID'].value
print getJmolPage(target)
Note, all HTML code had to be escaped in order to be posted on the blog.