У меня вопрос по поводу существования файла проверки.
У меня есть этот фрагмент кода.
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.
Спасибо



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку это синхронный запрос, вы можете просто попытаться проанализировать полученный вами 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 означает успешный запрос ... весь этот блок кода может использовать какое-то объяснение для будущих пользователей ...
@KirkLarkin - я опубликовал свой собственный ответ, и, несмотря на то, что он был правильным, меня троллили и проголосовали против, и никто не сказал мне, почему, поэтому я удалил его
Возможный дубликат обнаруживать ошибку 404 при загрузке страницы