On Apr 27, 2007, at 1:22 PM, Xavier Noria wrote:

>
> If I serialize a form with two textfields with the same name and
> spaces in their values end up encoded as "%252520", instead of "%20",
> does that ring any bell?
>
> I've reduced the problem to this minimal example:
>
> <form id="f" action="none">
>    <p>First field: <input type="text" name="t" value="foo bar" /></p>
>    <p>Second filed: <input type="text" name="t" value="baz woo" /></p>
> </form>
> <p>
> <a onclick="new Ajax.Updater('dump', '/test/dump',
> {asynchronous:true, evalScripts:true, parameters:Form.serialize
> ('f')}); return false;" href="#">Dump form</a>
> </p>
> <pre id="dump">
> </pre>
>
> The call sends
>
>    t=foo%252520bar&t=baz%252520woo
>
> Does that ring any bell?

Ah, it looks like it's a bug in Prototype 1.5.0, there's indeed a  
double encodeURIComponent call in toQueryString, this is the fix:

--- orig_prototype.js   2007-04-27 13:33:50.000000000 +0200
+++ prototype.js        2007-04-27 13:34:38.000000000 +0200
@@ -647,7 +647,7 @@
                key = encodeURIComponent(pair.key);
            values.each(function(value) {
              value = value != undefined ? encodeURIComponent 
(value) : '';
-            parts.push(key + '=' + encodeURIComponent(value));
+            parts.push(key + '=' + value);
            });
            return;
          }

The implementarion of toQueryString in the current 1.5.1_rc3 is  
different, I guess it works OK there.

-- fxn


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Spinoffs" 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/rubyonrails-spinoffs?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to