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
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
responseType31.06.018.07.010.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
×

Кажется, вы используете блокировщик рекламы :(

Этот ресурс не является коммерческим проектом и развивается на энтузиазме автора сайта, который посвящает все свое свободное время этому проекту.

Добавьте, пожалуйста, basicweb.ru в исключения блокировщика рекламы, этим вы поможете развитию проекта.