JavaScript свойство XMLHttpRequest.responseType
JavaScript XMLHttpRequestОпределение и применение
JavaScript свойство responseType объекта XMLHttpRequest возвращает перечисляемое строковое значение, указывающее тип данных, содержащихся в ответе. Допускается устанавливать responseType в определенное значение, при это вы должны убедиться, что сервер действительно отправляет ответ, совместимый с этим форматом. Если сервер возвращает данные, несовместимые с установленным типом ответа, то значение ответа будет равно null.
Если в качестве значения responseType задана пустая строка, то используется значение по умолчанию "text".
Типы возможных ответов представлены ниже:
Значение | Тип данных свойства response |
---|---|
"" | Пустая строка обрабатывается так же как значение "text", которое является значением по умолчанию. |
"arraybuffer" | Тип данных свойства response представляет собой JavaScript объект ArrayBuffer, содержащий двоичные данные. |
"blob" | Тип данных свойства response представляет собой JavaScript объект Blob, содержащий двоичные данные. |
"document" | Тип данных свойства response представляет собой документ HTML или XML, в зависимости от MIME типа полученных данных. |
"json" | Тип данных свойства response представляет собой объект JavaScript, созданный путем анализа содержимого полученных данных как JSON. |
"text" | Тип данных свойства response представляет собой текст в объекте DOMString. Это значение по умолчанию. |
Изменить значение responseType в синхронном XMLHttpRequest можно только в том случае, если запрос принадлежит Worker. Это ограничение частично предназначено для обеспечения того, чтобы синхронные операции не использовались для больших операций, которые блокируют основной поток браузера, и деструктивны для пользовательского интерфейса.
XMLHttpRequest асинхронны по умолчанию, для перехода в синхронный режим, необходимо передать логическое значение false как значение необязательного параметра async при вызове метода open(), который позволяет инициализировать запрос. Большинство современных браузеров полностью упразднили синхронную поддержку XHR в основном потоке. Попытки установить значение responseType в "document" игнорируются в Worker.
Поддержка браузерами
Свойство | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
responseType | 31.0 | 6.0 | 18.0 | 7.0 | 10.0 | Да |
JavaScript синтаксис:
// чтение let type = XMLHttpRequest.responseType; // запись XMLHttpRequest.responseType = type;
Cпецификация
XMLHttpRequestИсключения
Тип исключения | Описание |
---|---|
InvalidAccessError | Возникает в том случае, если была сделана попытка изменить значение responseType на объекте XMLHttpRequest, который находится в синхронном режиме, а не в Worker. |
Пример использования
Пример ниже демонстрирует загрузку двоичного объекта с помощью объекта XMLHttpRequest методом "GET" и передает этот объект заданной функции обратного вызова:
function getBlob(url, callback) { let xhr = new XMLHttpRequest(); // инициализируем только что созданный запрос xhr.open("GET", url); // определяем параметры для запроса xhr.responseType = "blob" // указываем тип данных, ожидаемых в ответе xhr.onload = function() { // добавляем обработчик события callback(xhr.response); // передаем ответ сервера функции обратного вызова } xhr.send(); // отправляем запрос на сервер }
Пример ниже демонстрирует получение строкового значения от сервера, содержащее ответ на запрос в виде текста:
let xhr = new XMLHttpRequest(); // инициализируем только что созданный запрос xhr.open("GET", "/info"); // определяем параметры для запроса xhr.responseType = "text" // указываем тип данных, ожидаемых в ответе xhr.onreadystatechange = function() { // добавляем обработчик события // проверяем состояние запроса и числовой код состояния HTTP ответа if (xhr.readyState === 4 && xhr.status === 200) { const resultText = xhr.responseText; // строковое значение, содержащее ответ на запрос в виде текста console.log(resultText); // выводим в консоль это значение } }; xhr.send(); // отправляем запрос на серверJavaScript XMLHttpRequest