XmlHttpRequest не имеет свойства contentType
, поэтому ваш код не будет работать должным образом. Замените проверку типа содержимого в предложении if для xhr.getResponseHeader('content-type')
, как показано ниже:
function myRequest(url) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200 && xhr.getResponseHeader('content-type') == "application/json") {
console.log("Type", xhr.getResponseHeader("Content-Type"));
console.log("Text", xhr.responseText);
} else {
console.log("This is not a Json file");
}
};
xhr.send();
}
Проверьте изображение ниже. Вы заметите, что во время тестирования в консоли каждый оператор регистрирует результат этого оператора, поэтому в консоли вы увидите некоторое «неопределенное», и это нормально. Убедитесь, что при запуске функции для json API я получу два «Это не json», потому что onreadystatechanged
вызывается несколько раз, по одному для каждого xhr.readyState. Затем, когда xhr.readyState наконец достигает 4, консоль записывает «Type» и «Text» так, как вам нужно.