@@ -9,34 +9,14 @@ var JSON_ENDS = {
99} ;
1010var JSON_PROTECTION_PREFIX = / ^ \) \] \} ' , ? \n / ;
1111
12- function paramSerializerFactory ( jQueryMode ) {
13-
14- function serializeValue ( v ) {
15- if ( isObject ( v ) ) {
16- return isDate ( v ) ? v . toISOString ( ) : toJson ( v ) ;
17- }
18- return v ;
12+ function serializeValue ( v ) {
13+ if ( isObject ( v ) ) {
14+ return isDate ( v ) ? v . toISOString ( ) : toJson ( v ) ;
1915 }
20-
21- return function paramSerializer ( params ) {
22- if ( ! params ) return '' ;
23- var parts = [ ] ;
24- forEachSorted ( params , function ( value , key ) {
25- if ( value === null || isUndefined ( value ) ) return ;
26- if ( isArray ( value ) || isObject ( value ) && jQueryMode ) {
27- forEach ( value , function ( v , k ) {
28- var keySuffix = jQueryMode ? '[' + ( ! isArray ( value ) ? k : '' ) + ']' : '' ;
29- parts . push ( encodeUriQuery ( key + keySuffix ) + '=' + encodeUriQuery ( serializeValue ( v ) ) ) ;
30- } ) ;
31- } else {
32- parts . push ( encodeUriQuery ( key ) + '=' + encodeUriQuery ( serializeValue ( value ) ) ) ;
33- }
34- } ) ;
35-
36- return parts . length > 0 ? parts . join ( '&' ) : '' ;
37- } ;
16+ return v ;
3817}
3918
19+
4020function $HttpParamSerializerProvider ( ) {
4121 /**
4222 * @ngdoc service
@@ -51,7 +31,22 @@ function $HttpParamSerializerProvider() {
5131 * * `{'foo': {'bar':'baz'}}` results in `foo=%7B%22bar%22%3A%22baz%22%7D"` (stringified and encoded representation of an object)
5232 * */
5333 this . $get = function ( ) {
54- return paramSerializerFactory ( false ) ;
34+ return function ngParamSerializer ( params ) {
35+ if ( ! params ) return '' ;
36+ var parts = [ ] ;
37+ forEachSorted ( params , function ( value , key ) {
38+ if ( value === null || isUndefined ( value ) ) return ;
39+ if ( isArray ( value ) ) {
40+ forEach ( value , function ( v , k ) {
41+ parts . push ( encodeUriQuery ( key ) + '=' + encodeUriQuery ( serializeValue ( v ) ) ) ;
42+ } ) ;
43+ } else {
44+ parts . push ( encodeUriQuery ( key ) + '=' + encodeUriQuery ( serializeValue ( value ) ) ) ;
45+ }
46+ } ) ;
47+
48+ return parts . join ( '&' ) ;
49+ } ;
5550 } ;
5651}
5752
@@ -64,7 +59,30 @@ function $HttpParamSerializerJQLikeProvider() {
6459 * Alternative $http params serializer that follows jQuery's [`param()`](http://api.jquery.com/jquery.param/) method logic.
6560 * */
6661 this . $get = function ( ) {
67- return paramSerializerFactory ( true ) ;
62+ return function jQueryLikeParamSerializer ( params ) {
63+ if ( ! params ) return '' ;
64+ var parts = [ ] ;
65+ serialize ( params , '' , true ) ;
66+ return parts . join ( '&' ) ;
67+
68+ function serialize ( toSerialize , prefix , topLevel ) {
69+ if ( toSerialize === null || isUndefined ( toSerialize ) ) return ;
70+ if ( isArray ( toSerialize ) ) {
71+ forEach ( toSerialize , function ( value ) {
72+ serialize ( value , prefix + '[]' ) ;
73+ } ) ;
74+ } else if ( isObject ( toSerialize ) && ! isDate ( toSerialize ) ) {
75+ forEachSorted ( toSerialize , function ( value , key ) {
76+ serialize ( value , prefix +
77+ ( topLevel ? '' : '[' ) +
78+ key +
79+ ( topLevel ? '' : ']' ) ) ;
80+ } ) ;
81+ } else {
82+ parts . push ( encodeUriQuery ( prefix ) + '=' + encodeUriQuery ( serializeValue ( toSerialize ) ) ) ;
83+ }
84+ }
85+ }
6886 } ;
6987}
7088
0 commit comments