# Ruby and ajax

**URL:** <https://www.ruby-forum.com/t/ruby-and-ajax/104959>\
**Category:** Ruby\
**Created:** [May 24, 2007, 11:00am UTC](https://www.ruby-forum.com/t/ruby-and-ajax/104959 "2007-05-24T11:00:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![music](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/7c8e57/32.png) [@music](https://www.ruby-forum.com/u/music)\
**Post date:** [May 24, 2007, 11:00am UTC](https://www.ruby-forum.com/t/ruby-and-ajax/104959/1 "2007-05-24T11:00:46Z")

</div>

I have a problem with a ruby script, it doesn’t work if I call from a  
ajax method.  
The script is:

#!/usr/bin/ruby -w

require ‘proxy1LDAP’  
require ‘cgi’

cgi = CGI.new  
account = cgi.params

puts “Content-type: text/plain”  
puts

acc=Proxy1LDAP.new  
acc.connetti  
acc.inserisci(account)  
acc.disconnetti

If I call from action method of a form it works, but if I call from:

xmlHttp.open(“POST”, “/cgi-bin/ruby/accMail1.rb”, true);  
xmlHttp.onreadystatechange = handleStateChange;  
xmlHttp.setRequestHeader(“content-type”,  
“application/x-www-form-urlencoded”);  
xmlHttp.send(  
“uid=” + escape(field[‘uid’]) +  
“&nome=” + escape(field[‘nome’]) +  
“&cognome=” + escape(field[‘cognome’]) +  
“&codice=” + escape(field[‘codice’]) +  
“&password=” + escape(field[‘password’])  
);

passing parameters through send method.  
It doesn’t work.

---

<div class="post-metadata">

**Author:** ![music](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/7c8e57/32.png) [@music](https://www.ruby-forum.com/u/music)\
**Post date:** [May 26, 2007, 8:05pm UTC](https://www.ruby-forum.com/t/ruby-and-ajax/104959/2 "2007-05-26T20:05:29Z")

</div>

Use firebug to inspect what is actually being transmitted and you get  
a valid reply, etc. Also, check to make sure that CGI isn’t masking  
param varaibles sent via the QUERY\_STRING since it is a POST request  
(this might be the default behavior?)

---

<div class="post-metadata">

**Author:** ![music](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/7c8e57/32.png) [@music](https://www.ruby-forum.com/u/music)\
**Post date:** [May 29, 2007, 12:05pm UTC](https://www.ruby-forum.com/t/ruby-and-ajax/104959/3 "2007-05-29T12:05:30Z")

</div>

Paul S. wrote:

> Use firebug to inspect what is actually being transmitted and you get  
> a valid reply, etc. Also, check to make sure that CGI isn’t masking  
> param varaibles sent via the QUERY\_STRING since it is a POST request  
> (this might be the default behavior?)

What is firebug?  
Anyway now the script works but I don’t have any responseText.  
Ajax function is:

…  
function handleStateChange() {  
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {  
document.getElementById(“log”).innerHTML = xmlHttp.responseText;  
}  
}

the script is

require ‘proxy1LDAP’  
require ‘cgi’

cgi = CGI.new  
account = cgi.params

acc=Proxy1LDAP.new  
acc.connetti  
acc.inserisci(account)  
acc.disconnetti  
cgi.out(“text/plain”) do  
“prova”  
end

I expect the string “prova” as a responseText, the script works fine but  
I don’t have any responseText.  
Is a script problem?
