POST data with XMLHttpRequest to CGI (Mozilla)

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

My JavaScript is trying to POST data to a CGI script (Perl) using
XMLHttpRequest. My CGI server gets different data from IE than Mozilla

// For Mozilla, req = new XMLHttpRequest();
// For IE req = new ActiveXObject("Microsoft.XMLHTTP");
    req.onreadystatechange = requestHandler ;    // function to handle async
response'POST', myURL, true);                   // use POST
    req.send('foo=11&bar=22') ;

A Perl CGI script prints the parameters passed to it.
  $q = new CGI ;
  foreach my $param ($q->param) {
    print "$param: " . $q->param($param) . "\n" ;

The data received by the CGI script is inconsistent, depending if the client
is IE or Mozilla (Firefox)
Server result from IE client:
    foo: 11
    bar: 22
Server result from Mozilla Firefox client:
   POSTDATA: foo=11&bar=22

It seems that the POST data IE sends is more correct than the Mozilla data.
Is there another way to send the data in Mozilla so the CGI script will give
the same results.  I could easily adjust the CGI script, but I think the
problem is at the client.

Jarson (jarson from sygration, that's a dot com company if you need to send
an email)


Re: POST data with XMLHttpRequest to CGI (Mozilla)

Quoted text here. Click to load it

 Aren't you missing setting the content-type for your request, that is, using:

req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;');

 Perhaps one browser fills in the blanks whereas the other doesn't; either way
you ought to explicitly state it when POSTing data.

< Space: disk usage analysis tool

Re: POST data with XMLHttpRequest to CGI (Mozilla)

Jarson wrote:

Quoted text here. Click to load it

First make the open call, then set the onreadystatechange handler and
then before you send the data set the HTTP request header e.g.
   if (typeof req.setRequestHeader != 'undefined') {

Quoted text here. Click to load it

as that seems to be the content type of the data you want to post.


    Martin Honnen /

Site Timeline