diff --git a/apps/tests/xhr-tests.ts b/apps/tests/xhr-tests.ts index d60c167f3..e7695503b 100644 --- a/apps/tests/xhr-tests.ts +++ b/apps/tests/xhr-tests.ts @@ -110,6 +110,17 @@ export var test_XMLHttpRequest_headersSentAndReceivedProperly = function (done) // }; +export var test_XMLHttpRequest_setResponseTypeShouldNotThrow = function (done) { + try { + var xhr = new XMLHttpRequest(); + (xhr)._setResponseType(); + done(null); + } + catch (err) { + done(err); + } +}; + export var test_XMLHttpRequest_contentSentAndReceivedProperly = function (done) { // // ### Send/receive JSON diff --git a/xhr/xhr.ts b/xhr/xhr.ts index a20d12bff..9a4fa0951 100644 --- a/xhr/xhr.ts +++ b/xhr/xhr.ts @@ -116,11 +116,16 @@ export class XMLHttpRequest { } private _setResponseType() { - const contentType = this.getResponseHeader('Content-Type').toLowerCase(); + const header = this.getResponseHeader('Content-Type'); + const contentType = header && header.toLowerCase(); - if (contentType.indexOf('application/json') >= 0) { - this.responseType = XMLHttpRequestResponseType.json; - } else if (contentType.indexOf('text/plain') >= 0) { + if (contentType) { + if (contentType.indexOf('application/json') >= 0) { + this.responseType = XMLHttpRequestResponseType.json; + } else if (contentType.indexOf('text/plain') >= 0) { + this.responseType = XMLHttpRequestResponseType.text; + } + } else { this.responseType = XMLHttpRequestResponseType.text; } } @@ -177,7 +182,7 @@ export class XMLHttpRequest { && this._headers && this._headers[header] && !this._errorFlag - ) { + ) { return this._headers[header]; } @@ -309,8 +314,8 @@ export class FormData { toString(): string { var arr = new Array(); - this._data.forEach(function (value, name, map) { - arr.push(`${encodeURIComponent(name) }=${encodeURIComponent(value) }`); + this._data.forEach(function(value, name, map) { + arr.push(`${encodeURIComponent(name)}=${encodeURIComponent(value)}`); }); return arr.join("&");