File tree 3 files changed +21
-6
lines changed
3 files changed +21
-6
lines changed Original file line number Diff line number Diff line change 3
3
@fullName Bad JSON Data
4
4
@description
5
5
6
- This error occurs when the data parameter passed to the {@link ng.$http `defaultHttpResponseTransform`} service is not a valid JSON object.
7
- `defaultHttpResponseTransform` expects the first parameter as a valid JSON object if the second parameter of headers specifies a Content-Type of JSON.
6
+ The default @{link ng$http#default-transformations `transformResponse`} will try to parse the
7
+ response as JSON if the `Content-Type` header is `application/json` or the response looks like a
8
+ valid JSON-stringified object or array.
9
+ This error occurs when that data is not a valid JSON object.
8
10
9
- The error message should provide additional context such as the actual value of the parameter that was received .
11
+ The error message should provide additional context such as the actual response .
10
12
11
- To resolve this error, make sure you pass a valid JSON data object to `defaultHttpResponseTransform `.
13
+ To resolve this error, make sure you pass a valid JSON data object to `transformResponse `.
12
14
13
- For more information, see the {@link ng.$http `defaultHttpResponseTransform`} service API documentation.
15
+ For more information, see the {@link ng$http#default-transformations `transformResponse`} service
16
+ API documentation.
Original file line number Diff line number Diff line change @@ -141,7 +141,8 @@ function defaultHttpResponseTransform(data, headers) {
141
141
try {
142
142
data = fromJson ( tempData ) ;
143
143
} catch ( e ) {
144
- throw minErr ( '$http' ) ( 'baddata' , 'Data must be a valid JSON object. Received: {0}' , data ) ;
144
+ throw $httpMinErr ( 'baddata' , 'Data must be a valid JSON object. Received: "{0}". ' +
145
+ 'Error occurred: "{1}"' , data , e ) ;
145
146
}
146
147
}
147
148
}
Original file line number Diff line number Diff line change @@ -1442,6 +1442,17 @@ describe('$http', function() {
1442
1442
expect ( callback . calls . argsFor ( 1 ) [ 0 ] ) . toBe ( null ) ;
1443
1443
expect ( callback . calls . argsFor ( 2 ) [ 0 ] ) . toBe ( '' ) ;
1444
1444
} ) ;
1445
+
1446
+ it ( 'should return JSON data with error message if JSON is invalid' , function ( ) {
1447
+ var errCallback = jasmine . createSpy ( 'error' ) ;
1448
+ $httpBackend . expect ( 'GET' , '/url' ) . respond ( '{abcd}' , { 'Content-Type' : 'application/json' } ) ;
1449
+ $http ( { method : 'GET' , url : '/url' } ) . then ( callback ) . catch ( errCallback ) ;
1450
+ $httpBackend . flush ( ) ;
1451
+
1452
+ expect ( callback ) . not . toHaveBeenCalled ( ) ;
1453
+ expect ( errCallback ) . toHaveBeenCalledOnce ( ) ;
1454
+ expect ( errCallback . calls . mostRecent ( ) . args [ 0 ] ) . toEqualMinErr ( '$http' , 'baddata' ) ;
1455
+ } ) ;
1445
1456
} ) ;
1446
1457
} ) ;
1447
1458
You can’t perform that action at this time.
0 commit comments