Я хочу нажать кнопку, чтобы отобразить данные API с помощью JavaScript Fetch, но у меня возникают проблемы с TypeError: NetworkError при попытке получить ресурс.
Я думаю, что это связано с формой HTML. Если кто-то может помочь мне с этим. Я пытаюсь получить данные из API НАСА.
Код JS ниже
var search = document.getElementById("search");
search.addEventListener("click",function(){
//var startdate = document.getElementById("starter");
//var enddate = document.getElementById("enddate");
var url = "https://api.nasa.gov/planetary/apod?api_key=key";
fetch(url,{
method:"GET",
headers:{
"Content-Type":"application/json"
},
mode:"cors",
catch:"default"
}).then(function(response){
if (response.ok){
return response.json();
}else{
throw new Error(Error);
}
}).then(function(data){
console.info(data);
}).catch(function(error){
console.info(error);
});
});
Ниже представлена HTML-форма
<form>
<input type = "date" id = "startdate" placeholder = "enter a start date"><br>
<input type = "date" id = "enddate" placeholder = "enter a start date"><br>
<button type = "submit" id = "search">Search</button>
</form>
Спасибо



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


Попробуйте это, я добавил event.preventDefault() это предотвратит обновление страницы. Также не забудьте использовать правильный ключ API, предоставленный поставщиком услуг.
var search = document.getElementById("search");
search.addEventListener("click",function(event){
event.preventDefault();
//var startdate = document.getElementById("starter");
//var enddate = document.getElementById("enddate");
var url = "https://api.nasa.gov/planetary/apod?api_key=key";
fetch(url,{
method:"GET",
headers:{
"Content-Type":"application/json"
},
mode:"cors",
catch:"default"
}).then(function(response){
if (response.ok){
return response.json();
}else{
throw new Error(Error);
}
}).then(function(data){
console.info(data);
}).catch(function(error){
console.info(error);
});
});Код не работает, я получаю ошибку скрипта. Fetch должен работать с await вместо then(). Вам нужно async во втором аргументе слушателя перед анонимной функцией.
Этот URL с demo_key работает: api.nasa.gov/planetary/apod?api_key=DEMO_KEY
Вам не нужны параметры для вашего запроса на выборку, Также нужно запретить перезагрузку страницы
Вот полный рабочий пример
var search = document.getElementById("search");
search.addEventListener("click", function(e) {
e.preventDefault();
fetch("https://api.nasa.gov/planetary/apod?api_key=key_obtained_from_nasa")
.then(function(response) {
if (response.ok) {
return response.json();
}
throw new Error();
}).then(result => console.info(result))
.catch(function(response) {
console.info('Error! Please try again');
});
})<form>
<input type = "date" id = "startdate" placeholder = "enter a start date"><br>
<input type = "date" id = "enddate" placeholder = "enter a start date"><br>
<button type = "submit" id = "search">Search</button>
</form>Спасибо брат. Сейчас работает.. Я намеренно не показывал ключ API
вы пробовали с их ключом API? URL-адрес, который вы разместили, недействителен