/** | |
* 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; | |
} | |
} | |
} | |
} | |