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.');      }     }   }

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 Jones

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?

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

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 Jones