Hi,

That solution will break as soon as you include another character that
requires encoding, like (say) an ampersand, a space, ... (It may not
break with all browsers, and all links between the client and the
server, but sending malformed data will break somewhere, sometime.)

I'd recommend using a name=value style and then using cgiFormString[1]
to read it (I didn't know the library, but I knew it had to have
something so took a *very* quick look; surprised not to see a
standalone decoding function but I'm sure cgiFormString decodes, it
would be rubbish otherwise), e.g.:

var token = 'id1#a12345' + "," + 'id2#e6789'
new Ajax.Request('/some_url', {
        method: 'get',
        parameters: "token=" + encodeURIComponent(token)
});

...and then use cgiFormString to read the "token" field.

[1] http://www.boutell.com/cgic/#cgiFormString

Best,
--
T.J. Crowder
Independent Software Engineer
tj / crowder software / com
www / crowder software / com

On Apr 14, 5:24 pm, Sunild <[email protected]> wrote:
> 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" <[email protected]> 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 <[email protected]> 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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.

Reply via email to