820addb7f33c2999bd5f87f414b543bcbcde97b9f37543a869f92ae571fd3b6898aeafaa2c56d224713e1a00611689fcd8b1f16c61b454cf5c0ccfdc42d8f3 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /**
  2. * Gets what should be in the `response` property of the XHR. However,
  3. * since we still support the final versions of IE, we need to do a little
  4. * checking here to make sure that we get the right thing back. Consequently,
  5. * we need to do a JSON.parse() in here, which *could* throw if the response
  6. * isn't valid JSON.
  7. *
  8. * This is used both in creating an AjaxResponse, and in creating certain errors
  9. * that we throw, so we can give the user whatever was in the response property.
  10. *
  11. * @param xhr The XHR to examine the response of
  12. */
  13. export function getXHRResponse(xhr: XMLHttpRequest) {
  14. switch (xhr.responseType) {
  15. case 'json': {
  16. if ('response' in xhr) {
  17. return xhr.response;
  18. } else {
  19. // IE
  20. const ieXHR: any = xhr;
  21. return JSON.parse(ieXHR.responseText);
  22. }
  23. }
  24. case 'document':
  25. return xhr.responseXML;
  26. case 'text':
  27. default: {
  28. if ('response' in xhr) {
  29. return xhr.response;
  30. } else {
  31. // IE
  32. const ieXHR: any = xhr;
  33. return ieXHR.responseText;
  34. }
  35. }
  36. }
  37. }