Подскажите, как оформить работающую функцию FETCH
(async () => {
const response = await fetch('https://api.spacexdata.com/v4/starlink/');
const data = await response.json();
for(const starlink of data) {
document.write(`<p>${starlink.id}</p>`);
}
})();
Это работает, но как можно это оформить в виде функции с именем, чтобы повесить onclick? мне вот это вступление покоя не даЕт (async () (с) эта часть с примера - просто function name(){ и вся фунцкия пробовал, но не работает)} до этого я подходил вообще так
const textButton = document.getElementById('number');
const outputDiv = document.getElementById('output');
const textURL = 'https://api.spacexdata.com/v4/starlink';
textButton.addEventListener('click', () => {
fetch(textURL)
.then( response => {
outputDiv.innerHTML = 'Proszę poczekać';
if(response.ok) {
return response;
} throw Error(response.statusText);
})
.then( response => response.text() )
.then( text => outputDiv.innerText = text )
.catch( error => console.log('There was an error:', error))
}, false);
работает и клик работает, но оказалось, нельзя через текст Cпасибо |
Цитата:
<!DOCTYPE html>
<html>
<head>
<!--
<script src='https://code.jquery.com/jquery-latest.min.js'></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
document.addEventListener("DOMContentLoaded", () => {
document.getElementById('btn').addEventListener('click',test)
function test() {
alert(1)
/*
(async () => {
const response = await fetch('https://api.spacexdata.com/v4/starlink/');
const data = await response.json();
for(const starlink of data) {
document.write(`<p>${starlink.id}</p>`);
}
})();
*/
}
})
</script>
</head>
<body>
<button id='btn'>Ok</button>
</body>
</html>
|
Konstantin47,
создавайте свои темы здесь Общие вопросы Javascript |
Konstantin47,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
document.addEventListener( "DOMContentLoaded" , function() {
const spacex = async () => {
const response = await fetch('https://api.spacexdata.com/v4/starlink/');
let data = await response.json();
data = data.map(({id}) => `<p>${id}<\/p>`).join('');
out.insertAdjacentHTML('beforeend', data)
};
btn.addEventListener('click', spacex)
});
</script>
</head>
<body>
<button id='btn'>Ok</button>
<output id="out"></output>
</body>
</html>
|
А какие тут вообще проблемы?
<!DOCTYPE html>
<html>
<head>
<script>
async function test() {
const response = await fetch('https://api.spacexdata.com/v4/starlink/');
const data = await response.json();
for(const starlink of data) {
document.write(`<p>${starlink.id}</p>`);
}
}
</script>
</head>
<body>
<button id='btn' onclick="test()">Ok</button>
</body>
</html>
|
где - создавать темы, понял. Спасибо большое всем за помощь
|
Можно спросить, вот два варианта открывания информации. Почему через JSON показывает массив с ID номерами и все. Если зайти через консоль откроет тоже самое , что и через text. Что за это отвечает? какая строчка
<button id='number'>identyfikatory,nazwę,datę wystrzelenia</button> <button id='btn'>identyfikatory,nazwę,datę wystrzelenia2</button> <output id="out"></output> <div id='output'>
const textButton = document.getElementById('number');
const outputDiv = document.getElementById('output');
const textURL = 'https://api.spacexdata.com/v4/starlink';
textButton.addEventListener('click', () => {
fetch(textURL)
.then( response => {
outputDiv.innerHTML = 'Proszę poczekać';
if(response.ok) {
return response;
} throw Error(response.statusText);
})
.then( response => response.text() )
.then( text => outputDiv.innerText = text )
.catch( error => console.log('There was an error:', error))
}, false);
document.addEventListener( "DOMContentLoaded" , function() {
const spacex = async () => {
const response = await fetch('https://api.spacexdata.com/v4/starlink/');
let data = await response.json();
data = data.map(({id}) => `<p>${id}<\/p>`).join('');
out.insertAdjacentHTML('beforeend', data)
};
btn.addEventListener('click', spacex)
});
|
А что передается с сервера?
Что у вас открывается и что в консоле, при таком оформлении примера мы не увидим. |
Konstantin47, очевидно за показ только id отвечает строка в которой показывают только id:
data = data.map(({id}) => `<p>${id}<\/p>`).join('');
P.S. document.write? Серьёзно? Пацаны, вы чего? Konstantin47, забудь об этом дерьме пока молодой, станешь сеньёром - тогда можешь юзать.) |
Цитата:
|
| Часовой пояс GMT +3, время: 15:32. |