@@ -9,34 +9,14 @@ var JSON_ENDS = {
9
9
} ;
10
10
var JSON_PROTECTION_PREFIX = / ^ \) \] \} ' , ? \n / ;
11
11
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 ) ;
19
15
}
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 ;
38
17
}
39
18
19
+
40
20
function $HttpParamSerializerProvider ( ) {
41
21
/**
42
22
* @ngdoc service
@@ -51,7 +31,22 @@ function $HttpParamSerializerProvider() {
51
31
* * `{'foo': {'bar':'baz'}}` results in `foo=%7B%22bar%22%3A%22baz%22%7D"` (stringified and encoded representation of an object)
52
32
* */
53
33
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
+ } ;
55
50
} ;
56
51
}
57
52
@@ -64,7 +59,30 @@ function $HttpParamSerializerJQLikeProvider() {
64
59
* Alternative $http params serializer that follows jQuery's [`param()`](http://api.jquery.com/jquery.param/) method logic.
65
60
* */
66
61
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
+ }
68
86
} ;
69
87
}
70
88
0 commit comments