@@ -11,30 +11,56 @@ var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/;
11
11
12
12
function paramSerializerFactory ( jQueryMode ) {
13
13
14
+ return jQueryMode ? jQueryLikeParamSerializer : paramSerializer ;
15
+
14
16
function serializeValue ( v ) {
15
17
if ( isObject ( v ) ) {
16
18
return isDate ( v ) ? v . toISOString ( ) : toJson ( v ) ;
17
19
}
18
20
return v ;
19
21
}
20
22
21
- return function paramSerializer ( params ) {
23
+ function paramSerializer ( params ) {
22
24
if ( ! params ) return '' ;
23
25
var parts = [ ] ;
24
26
forEachSorted ( params , function ( value , key ) {
25
27
if ( value === null || isUndefined ( value ) ) return ;
26
- if ( isArray ( value ) || isObject ( value ) && jQueryMode ) {
28
+ if ( isArray ( value ) ) {
27
29
forEach ( value , function ( v , k ) {
28
- var keySuffix = jQueryMode ? '[' + ( ! isArray ( value ) ? k : '' ) + ']' : '' ;
29
- parts . push ( encodeUriQuery ( key + keySuffix ) + '=' + encodeUriQuery ( serializeValue ( v ) ) ) ;
30
+ parts . push ( encodeUriQuery ( key ) + '=' + encodeUriQuery ( serializeValue ( v ) ) ) ;
30
31
} ) ;
31
32
} else {
32
33
parts . push ( encodeUriQuery ( key ) + '=' + encodeUriQuery ( serializeValue ( value ) ) ) ;
33
34
}
34
35
} ) ;
35
36
36
- return parts . length > 0 ? parts . join ( '&' ) : '' ;
37
- } ;
37
+ return parts . join ( '&' ) ;
38
+ }
39
+
40
+ function jQueryLikeParamSerializer ( params ) {
41
+ if ( ! params ) return '' ;
42
+ var parts = [ ] ;
43
+ serialize ( params , '' , true ) ;
44
+ return parts . join ( '&' ) ;
45
+
46
+ function serialize ( toSerialize , prefix , topLevel ) {
47
+ if ( toSerialize === null || isUndefined ( toSerialize ) ) return ;
48
+ if ( isArray ( toSerialize ) ) {
49
+ forEach ( toSerialize , function ( value ) {
50
+ serialize ( value , prefix + '[]' ) ;
51
+ } ) ;
52
+ } else if ( isObject ( toSerialize ) && ! isDate ( toSerialize ) ) {
53
+ forEachSorted ( toSerialize , function ( value , key ) {
54
+ serialize ( value , prefix +
55
+ ( topLevel ? '' : '[' ) +
56
+ key +
57
+ ( topLevel ? '' : ']' ) ) ;
58
+ } ) ;
59
+ } else {
60
+ parts . push ( encodeUriQuery ( prefix ) + '=' + encodeUriQuery ( serializeValue ( toSerialize ) ) ) ;
61
+ }
62
+ }
63
+ }
38
64
}
39
65
40
66
function $HttpParamSerializerProvider ( ) {
0 commit comments