38 lines
1.1 KiB
Plaintext
38 lines
1.1 KiB
Plaintext
/**
|
|
* 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;
|
|
}
|
|
}
|
|
}
|
|
}
|