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