Marco, why not just sanitize your data, as you use it, to guarantee
that it's not url-encoded?

- Ben

On Nov 23, 10:19 am, Marco Rogers <marco.rog...@gmail.com> wrote:
> Sure that's always an option.  But the point of the toolkit is to take
> advantage of functions that have been tried tested and improved by
> many people.  For instance, I'm sure my version wouldn't include the
> nice recursive array handling that seems to be baked in to $.param for
> 1.4.
>
> :Marco
>
> On Nov 20, 7:05 pm, Markw65 <mark...@gmail.com> wrote:
>
>
>
> > You can encode the data yourself, and pass it in as a string (rather
> > than as key/value pairs).
>
> > Then its just used as is...
>
> > Mark
>
> > On Nov 20, 2:36 pm, Marco Rogers <marco.rog...@gmail.com> wrote:
>
> > > I just realized that while this is a compatible change for $.ajax,
> > > it's not for $.param.  If encodeData isn't passed in, it'll stop
> > > encoding by default.  Gonna put some more thought into it.  I'm open
> > > to suggestions.
>
> > > :Marco
>
> > > On Nov 20, 5:22 pm, Marco Rogers <marco.rog...@gmail.com> wrote:
>
> > > > This is essentially a proposal for an enhancement to the two named
> > > > functions:
>
> > > > I ran into an issue today when sending parameters with the ajax
> > > > function.  If the data option is set, $.param is used to encode and
> > > > format the keys and values into a query string.  But some of the
> > > > values in my data were already encoded and hence got double encoded.
> > > > It was not easy to determine which params had been pre-encoded and
> > > > which hadn't.  And there's no way to tell $.ajax not to encode the
> > > > data because it's already been done.
>
> > > > I got around the issue by explicitly decoding all the params before
> > > > passing to $.ajax to be re-encoded.  This is obviously ugly and has
> > > > the potential for other hidden issues.
>
> > > > I don't know if this happens often enough to do something about it.
> > > > But if so, I'm thinking it could be addressed in one of 2 ways. Sorry
> > > > for using words instead of code, don't have much time.
>
> > > > 1) Add an "encodeData" option to $.ajax and $.param that defaults to
> > > > true.  $.ajax would pass it through to $.param and If it's false,
> > > > it'll skip the encoding step.
>
> > > > $.ajax has plenty of options already and this one wouldn't be used
> > > > often I'm sure.  But it's trivial to add and backwards compatible.
>
> > > > 2)  Add an option to pass in a data processing function.
>
> > > > It looks like $.param uses an inner "add" function that does the
> > > > simple formatting and encoding.  $.ajax could allow passing in a
> > > > replacement for that function. It would take the current key and value
> > > > being processed and skip encoding or add some special logic based on
> > > > the key name.
>
> > > >     function newAdd(key, value) {
> > > >         return key + '=' + value;
> > > >     }
>
> > > > The only problem with this is that the current add function doesn't
> > > > return the formatted string.  It accesses an array through a closure
> > > > and adds the string explicitly.  This could be refactored to use a
> > > > binding or something, but it may not be trivial because the
> > > > buildParams function also uses this closure to facilitate the
> > > > recursion on array values.
>
> > > > Any input is appreciated.  If this seems worthwhile I may tackle it
> > > > and submit a pull request.
>
> > > > :Marco

--

You received this message because you are subscribed to the Google Groups 
"jQuery Development" group.
To post to this group, send email to jquery-...@googlegroups.com.
To unsubscribe from this group, send email to 
jquery-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/jquery-dev?hl=en.


Reply via email to