@@ -68,7 +68,7 @@ export function ajaxPut<T>(url: string, body?: any, headers?: Object): Observabl
6868} ;
6969
7070export function ajaxGetJSON < T , R > ( url : string , resultSelector ?: ( data : T ) => R , headers ?: Object ) : Observable < R > {
71- const finalResultSelector = resultSelector ? ( res : AjaxResponse ) => resultSelector ( res . response ) : null ;
71+ const finalResultSelector = resultSelector ? ( res : AjaxResponse ) => resultSelector ( res . response ) : ( res : AjaxResponse ) => res . response ;
7272 return new AjaxObservable < R > ( { method : 'GET' , url, responseType : 'json' , resultSelector : finalResultSelector , headers } ) ;
7373} ;
7474 /**
@@ -336,35 +336,34 @@ export class AjaxResponse {
336336 /** {number} the HTTP status code */
337337 status : number ;
338338
339- /** {string|ArrayBuffer|object|any} the response data */
339+ /** {string|ArrayBuffer|Document| object|any} the response data */
340340 response : any ;
341341
342342 /** {string} the raw responseText */
343343 responseText : string ;
344344
345- /** {string} the responsType (e.g. 'json' or 'array-buffer ') */
345+ /** {string} the responsType (e.g. 'json', 'arraybuffer', or 'xml ') */
346346 responseType : string ;
347347
348- /** {Document} an XML Document from the response */
349- responseXML : Document ;
350-
351348 constructor ( public originalEvent : Event , public xhr : XMLHttpRequest , public request : AjaxRequest ) {
352349 this . status = xhr . status ;
353- const responseType = xhr . responseType ;
354- let response : any ;
355- if ( 'response' in xhr ) {
356- response = xhr . response ;
357- } else {
358- if ( request . responseType === 'json' ) {
359- response = JSON . parse ( xhr . responseText ) ;
360- } else {
361- response = xhr . responseText ;
362- }
350+ this . responseType = xhr . responseType ;
351+ switch ( this . responseType ) {
352+ case 'json' :
353+ if ( 'response' in xhr ) {
354+ this . response = xhr . response ;
355+ } else {
356+ this . response = JSON . parse ( xhr . responseText || '' ) ;
357+ }
358+ break ;
359+ case 'xml' :
360+ this . response = xhr . responseXML ;
361+ break ;
362+ case 'text' :
363+ default :
364+ this . response = ( 'response' in xhr ) ? xhr . response : xhr . responseText ;
365+ break ;
363366 }
364- this . responseText = xhr . responseText ;
365- this . responseType = responseType ;
366- this . responseXML = xhr . responseXML ;
367- this . response = response ;
368367 }
369368}
370369
0 commit comments