#javascript #html
Вопрос:
Как я могу поместить возвращаемое значение API get на html-страницу?
Если я это сделаю:
const url = "https://alloysystems.freshdesk.com/api/v2/tickets";
fetch(url, {
method: "GET",
withCredentials: true,
headers: {
// needed to base64 encode my key with ":x" at the end of the api key then I used that for the authorization header.
"authorization": "Basic ILLNEVERGIVEYOUMYKEYKEYLOL"
}
})
.then(resp => resp.json())
.then(data => console.log(data))
Я получаю кучу объектов (я думаю) в журнале консоли:
Однако, если я попытаюсь добавить данные в html-тег, чтобы увидеть их на веб-странице, я либо получу сбой, либо получу [Object],[Object]
Попытка кода: Html:
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Today's Date</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<script src="js/script.js"></script>
</body>
</html>
Язык JavaScript:
let d = new Date();
const url = "https://alloysystems.freshdesk.com/api/v2/tickets";
fetch(url, {
method: "GET",
withCredentials: true,
headers: {
// needed to base64 encode my key with ":x" at the end of the api key then I used that for the authorization header.
"authorization": "Basic ILLNEVERGIVEYOUMYKEYKEYLOL"
}
})
.then(resp => resp.json())
.then(data => document.body.innerHTML = "<h1>" data "</h1>")
Ответ №1:
data
это объект, поэтому, если вы хотите показать все его содержимое между тегом h1, вам сначала нужно его упорядочить, вот так :
.then(data => document.body.innerHTML = "<h1>" JSON.stringify(data) "</h1>")
Если вы просто хотите показать тип, например, вам нужно указать эту часть следующим образом:
.then(data => document.body.innerHTML = "<h1>" data.type "</h1>")
Ответ №2:
Вам нужно преобразовать его из объекта в JSON с помощью
JSON.stringify(value, replacer, space)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
Если вы хотите отобразить его в формате (многострочный и с отступом) на html — странице, поместите внутри <pre>
тега.
См. Пример ниже во фрагменте
fetch(
`https://api.coingecko.com/api/v3/coins/markets?vs_currency=usdamp;per_page=2amp;page=1`
)
.then((r) => r.json())
.then((d) => {
const pre = document.createElement('pre');
pre.innerText = JSON.stringify(d, null, `t`)
document.querySelector('body').appendChild(pre);
});
body,
pre {
color: white;
background: #0080ff;
font-family: Calibri
}