/**
|
* Gets what should be in the `response` property of the XHR. However,
|
* since we still support the final versions of IE, we need to do a little
|
* checking here to make sure that we get the right thing back. Consequently,
|
* we need to do a JSON.parse() in here, which *could* throw if the response
|
* isn't valid JSON.
|
*
|
* This is used both in creating an AjaxResponse, and in creating certain errors
|
* that we throw, so we can give the user whatever was in the response property.
|
*
|
* @param xhr The XHR to examine the response of
|
*/
|
export function getXHRResponse(xhr: XMLHttpRequest) {
|
switch (xhr.responseType) {
|
case 'json': {
|
if ('response' in xhr) {
|
return xhr.response;
|
} else {
|
// IE
|
const ieXHR: any = xhr;
|
return JSON.parse(ieXHR.responseText);
|
}
|
}
|
case 'document':
|
return xhr.responseXML;
|
case 'text':
|
default: {
|
if ('response' in xhr) {
|
return xhr.response;
|
} else {
|
// IE
|
const ieXHR: any = xhr;
|
return ieXHR.responseText;
|
}
|
}
|
}
|
}
|