Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 9061

Show
Ignore:
Timestamp:
03/19/08 13:01:47 (4 months ago)
Author:
tobie
Message:

prototype: Prevent Hash#toQueryString from serializing objets.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • spinoffs/prototype/trunk/CHANGELOG

    r9060 r9061  
     1* Prevent Hash#toQueryString from serializing objets. [kangax, Tobie Langel] 
     2 
    13* Fix Event#pointer in IE standard mode. Closes #9920. [kangax, Tobie Langel] 
    24 
  • spinoffs/prototype/trunk/src/hash.js

    r8139 r9061  
    6969 
    7070    toQueryString: function() { 
    71       return this.map(function(pair) { 
     71      return this.inject([], function(results, pair) { 
    7272        var key = encodeURIComponent(pair.key), values = pair.value; 
    7373 
    7474        if (values && typeof values == 'object') { 
    7575          if (Object.isArray(values)) 
    76             return values.map(toQueryPair.curry(key)).join('&'); 
    77         } 
    78         return toQueryPair(key, values)
     76            return results.concat(values.map(toQueryPair.curry(key))); 
     77        } else results.push(toQueryPair(key, values)); 
     78        return results
    7979      }).join('&'); 
    8080    }, 
  • spinoffs/prototype/trunk/test/unit/hash.html

    r9038 r9061  
    173173      this.assertEqual("color=&color",       $H(Fixtures.multiple_all_nil).toQueryString()); 
    174174      this.assertEqual("",                   $H(Fixtures.multiple_empty).toQueryString()); 
     175      this.assertEqual("",                   $H({foo: {}, bar: {}}).toQueryString()); 
    175176      this.assertEqual("stuff%5B%5D=%24&stuff%5B%5D=a&stuff%5B%5D=%3B", $H(Fixtures.multiple_special).toQueryString()); 
    176177      this.assertHashEqual(Fixtures.multiple_special, $H(Fixtures.multiple_special).toQueryString().toQueryParams());