Routes from raw js (using XMLHttpRequest)

I am making an ajax call from js to call a method (assocboxchange) in
my controller (AssociatesController), using XMLHttpRequest. I know
the XMLHttpRequest works fine because I use it in other places with
success. My problem is my URL I am using for this request doesn;t
access the method in my controller which I (think) I am specifying. I
am having it post to /channels/assocboxchange/" with certain
parameters, but the method in my controller never is gotten to. I know
the problem is not in my js or in making the post request – it is
posting somewhere and I believe that because in firefox, the error
concole is clean. Can someone tell me from my js below where I am
posting, or why my controller method isnt getting the post? Thanks,
Janna B

//this function is getting called by an onchange in the associates
select
function assocchange(therow){
var s = document.getElementById(“assoc”+therow).value;
var url = “/channels/assocboxchange/”
var parameters = “assoc=” + escape(encodeURI(s)) + “&id=” + therow;
formid=“assoc” + therow;
makePOSTRequest(url, parameters, formid)
}

function makePOSTRequest(url, parameters, formid){
req3 = new XMLHttpRequest();
if (req3) {
req3.onreadystatechange = alertContents(formid);
req3.open(‘POST’, url, true);
req3.setRequestHeader(“Content-type”, “application/x-www-form-
urlencoded”);
req3.setRequestHeader(“Content-length”, parameters.length);
req3.setRequestHeader(“Connection”, “close”);
req3.send(parameters);
}
}

function alertContents(formid) {
if (req3.readyState == 4) {
if (req3.status == 200) {
result = req3.responseText;
document.getElementById("’"+formid+"’").innerHTML =
result;
} else {
alert(‘There was a problem with the request.’);
}
}
}

On Fri, 2009-07-24 at 05:09 -0700, JannaB wrote:

it is posting somewhere and I believe that because in firefox,
the error concole is clean.

The console tab in the Firebug plugin is what you want to be looking at.
It will tell you if / where your app is making requests and the
parameters it’s passing.

HTH,
Bill

What shows up in the log when you try this action? That will give you
more info…

–Matt J.

What a great tool. When I click the select box, in firebug, I see a
RED:

POST http://localhost:3000/channels/assocboxchange/

with a littel red circle with a white X in it. IF I look at the
parameters, those seem to be passed properly.

In my ChannelsController, I have:

def assocboxchange
puts “you;re in”
render :action => ‘display’
end

Which doesn;t get hit – obviously, that red POST line is trying to
tell me something is wrong…but what? -Janna B

Oh, wait, I need to pass the parameter of the authenticity_token to
the url. How can I do this?

You’ll need to grab the token on the server side - see line 1065 of
prototype_helper.rb for more detail.

But before you do that, you may want to take a look at the rest of
PrototypeHelper; what you’re doing looks to be well-covered by the
methods already available, which could save you a lot of low-level
AJAX hackery.

–Matt J.

Oh, wait, I need to pass the parameter of the authenticity_token to
the url. How can I do this? -Janna