Обнаружить, что JSON существует

У меня вопрос по поводу существования файла проверки.

У меня есть этот фрагмент кода.

function fileExists(url) {
  if (url) {
    var req = new XMLHttpRequest();
    req.open('GET', url, false);
    req.send();
    console.info("exists");
    return true;
  } else {
    console.info("no exists");
    return false;
  }
}

Но он говорит мне, что файл существует. Но его не существует. На самом деле на моем URL-адресе есть файл XML с ошибкой 404. Можно ли как-то определить, является ли запрошенный URL-адрес JSON? Мне нужно вернуть истину, только если проверенный файл - JSON.

Спасибо

Возможный дубликат обнаруживать ошибку 404 при загрузке страницы

Chris S. 16.08.2018 17:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
125
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку это синхронный запрос, вы можете просто попытаться проанализировать полученный вами responseText, и если он не будет проанализирован, вы знаете, что это не JSON:

        var res = req.responseText;
        try {
             res = JSON.parse(res);
             console.info('json', res);
        } catch (e) {
             console.info('not json')
        }

Если бы это не был синхронный запрос, это сработало бы:

Если вы посмотрите на XMLHttpRequest документы, вы увидите, что для получения данных обратно из XMLHttpRequest вам необходимо добавить функцию обратного вызова:

xhr.onreadystatechange = function() {//Call a function when the state changes.
    if (this.readyState == XMLHttpRequest.DONE && this.status == 200) {
        // Request finished. Do processing here.
    }
}

Если вы хотите проверить, является ли ваш запрос JSON, вы можете сделать это:

xhr.onreadystatechange = function() {//Call a function when the state changes.
    if (this.readyState == XMLHttpRequest.DONE && this.status == 200) {
        var res = this.responseText;
        try {
             JSON.parse(res);
             console.info('json', res);
        } catch (e) {
             console.info('not json')
        }
    }
}

вам, вероятно, следует объяснить, что код состояния 200 означает успешный запрос ... весь этот блок кода может использовать какое-то объяснение для будущих пользователей ...

DrCord 16.08.2018 17:41

@KirkLarkin - я опубликовал свой собственный ответ, и, несмотря на то, что он был правильным, меня троллили и проголосовали против, и никто не сказал мне, почему, поэтому я удалил его

DrCord 16.08.2018 17:50

Другие вопросы по теме