Based on TJ's suggestion, I resolved the issue by modifying token =
token.replace(/#/g, '%23') and it works now. I gave the
encodeURIComponent() solution a shot, but I have a cgic backend and I
am not sure about the decoding, so abondoned that in a hurry :-)

Thank you for the responses.



On Apr 14, 4:20 am, "T.J. Crowder" <t...@crowdersoftware.com> wrote:
> Hi,
>
> When you pass a string into `Ajax.Request`, you're taking
> responsibility for properly encoding it. Since you're not specifying a
> different encoding, the default is URI encoding, in which the '#'
> should be encoded as %23.
>
> To correctly encode your parameters, encode each component (e.g., the
> name or value) using `encodeURIComponent`. Since you're just using a
> single string, not a series of name=value items, for you that would
> be:
>
> new Ajax.Request('/some_url', {
>     method: 'get',
>     parameters: encodeURIComponent(token)
>
> });
>
> You'll want to ensure that whatever is receiving it decodes it
> correctly as well. I mention that since you're not using named
> parameters, and so I suspect you have server-side code looking
> directly at the query string, which will be encoded. (If your server-
> side code were dealing with a framework of some kind that handles
> named parameters for you, that framework would decode for you.)
>
> If you were doing named parameters, like "foo=bar", you would do the
> component parts, not the whole thing:
>
> params = encodeURIComponent("foo") + "=" + encodeURIComponent("bar");
> new Ajax.Request('/some_url', {
>     method: 'get',
>     parameters: params
>
> });
>
> (You rarely see people encoding the name portion, because most of the
> time they're simple names that don't need encoding -- e.g., in teh
> above, "foo" is the same before and after encoding and so I could have
> omitted it. I couldn't if "foo" had any interesting characters in it.)
>
> HTH,
> --
> T.J. Crowder
> Independent Software Engineer
> tj / crowder software / com
> www / crowder software / com
>
> On Apr 14, 6:52 am, Sunild <sunil.dsou...@gmail.com> wrote:
>
>
>
> > New to Prototype/JS, etc. I have the following code.
>
> > var token = 'id1#a12345' + "," + 'id2#e6789'
>
> > new Ajax.Request('/some_url', {
> >                             method: 'get',
> >                             parameters: token   });
>
> > Using FF 3.6.16 and Firebug 1.5.4, the params get truncated at the #
> > symbol and only 'id1' is sent in the request. I've tried escaping the
> > # with
>
> > token = token.replace(/#/g, "\\#"); with the similar results. Now 'id1\
> > \' is sent. How do I send the # symbol as part of the request
> > parameters ?- Hide quoted text -
>
> - Show quoted text -

-- 
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.

Reply via email to