[mod_python] XMLHttpRequest + CGI + mod_python

Deron Meranda deron.meranda at gmail.com
Thu Aug 10 16:22:35 EDT 2006

On 8/10/06, Nando Drabik <nandogringo at gmail.com> wrote:
> I would like some help fixing the problem I am stuck in. To make this as
> short and simple as possible, it has mostly to do with the
> cgi.FieldStorage class. I have:
> 1) mod_python installed correctly on apache2
> 2) File test.py (resides under cgi-bin):
> 3) HTML file that sends out XMLHttpRequest from js
> test.py ===============================
> #!/usr/bin/env python
> import sys, re, cgi
> ...
> fields = cgi.FieldStorage()
> req = fields.getvalue("myVar") ##  THIS IS WHERE THE WHOLE THING CRAHSES

Do you realize that you are NOT using mod_python here?
What you have is a standard CGI script, not a mod_python
handler, and are using the standard Python "cgi" module.

On the surface realize when you type it on the Firefox URL bar,
it results in a GET request with the parameters URL-encoded
into the URL itself.

But your XMLHttpRequest is doing a POST.  However you
are just sending the data "myVar=10".  Normally posted
data should have the content type multipart/form-data.  Or
you need to set the content-type header appropriately.

The CGI FieldStorage can only handle multipart/form-data
and application/x-www-form-urlencoded.  If you're sending
raw JSON formatted text, then you can't expect to use the
FieldStorage classes.  You need to read and decode the
request body directly.
Deron Meranda

More information about the Mod_python mailing list