by Guest » 06 Jan 2025, 18:37
Ich habe in einem Forum nach Problemen im Zusammenhang mit JSON und der Abruffunktion gesucht. Es gibt viele davon, aber es fällt mir schwer, das zu verstehen. Was ich brauche, ist die URL „/api“ abzurufen, die Folgendes zurückgibt:
Code: Select all
{"lux": 0, "pressure": 0.0, "TVOC": 0, "temp": 0.0, "hum": 0.0, "AQI": 0, "eCO2": 0}
Ich möchte Felder in einer HTML-Tabelle mit diesen Werten füllen. Ich habe mit einer einfachen Sache in meinem HTML-Code begonnen:
Code: Select all
async function get_data() {
await fetch('/api')
.then(resolve => resolve.json())
.then(data => jdata = data);
return jdata;
}
const JD = () => {
fetch('/api')
.then(resolve => resolve.json())
.then(data => jdata = data);
}
//let raw_data='{"lux":0, "pressure":0, "TVOC":0, "temp":0, "hum":0, "AQI":0, "eCO2":0}';
//jdata=JSON.parse(raw_data);
let raw_data = get_data();
jdata = JSON.parse(raw_data);
console.log(raw_data);
console.log(jdata);
console.log(JD);
console.log(jdata.lux);
document.getElementById("dane_temp").innerHTML = jdata.temp;
Wenn ich das mache, erhalte ich die Fehlermeldung
Uncaught SyntaxError: JSON.parse: unerwartetes Zeichen in Zeile 1, Spalte 2 der JSON-Datenzeile
also kommentiere ich die JSON.parse-Zeile. Das Problem ist, dass
raw_data ein
promise-Objekt ist und ich die JSON-Daten nicht richtig zuweisen kann
jdata-Variable.
Ich habe im Allgemeinen Probleme damit, diese verschachtelten Objekte in etwas umzuwandeln, das ich analysieren kann. Wenn ich eine Zeichenfolge zuweise, wie im auskommentierten Abschnitt, kann ich JSON.parse ausführen und alles funktioniert, aber dann ist raw_data kein Objekt, sondern einfach die Zeichenfolge. Aber bei dieser asynchronen Funktion steht Folgendes in den
raw_data:
Code: Select all
Promise { : "pending" }
: "fulfilled"
: Object { lux: 0, pressure: 0, TVOC: 0, … }
: Promise.prototype { … }
JD erhält ein
function-Objekt und ich sehe es nicht alle darin enthaltenen Daten.
Ich habe verschiedene Beiträge in diesem Forum durchgesehen und aufgrund der Tatsache, dass ich normalerweise nicht in JS programmiere, habe ich Probleme zu verstehen, wie man eine Zeichenfolge aus diesem Versprechensobjekt herauszieht.
Können Sie mir dabei helfen?
Ich habe in einem Forum nach Problemen im Zusammenhang mit JSON und der Abruffunktion gesucht. Es gibt viele davon, aber es fällt mir schwer, das zu verstehen. Was ich brauche, ist die URL „/api“ abzurufen, die Folgendes zurückgibt:
[code]{"lux": 0, "pressure": 0.0, "TVOC": 0, "temp": 0.0, "hum": 0.0, "AQI": 0, "eCO2": 0}
[/code]
Ich möchte Felder in einer HTML-Tabelle mit diesen Werten füllen. Ich habe mit einer einfachen Sache in meinem HTML-Code begonnen:
[code]
async function get_data() {
await fetch('/api')
.then(resolve => resolve.json())
.then(data => jdata = data);
return jdata;
}
const JD = () => {
fetch('/api')
.then(resolve => resolve.json())
.then(data => jdata = data);
}
//let raw_data='{"lux":0, "pressure":0, "TVOC":0, "temp":0, "hum":0, "AQI":0, "eCO2":0}';
//jdata=JSON.parse(raw_data);
let raw_data = get_data();
jdata = JSON.parse(raw_data);
console.log(raw_data);
console.log(jdata);
console.log(JD);
console.log(jdata.lux);
document.getElementById("dane_temp").innerHTML = jdata.temp;
[/code]
Wenn ich das mache, erhalte ich die Fehlermeldung
Uncaught SyntaxError: JSON.parse: unerwartetes Zeichen in Zeile 1, Spalte 2 der JSON-Datenzeile
also kommentiere ich die JSON.parse-Zeile. Das Problem ist, dass [b]raw_data[/b] ein [b]promise[/b]-Objekt ist und ich die JSON-Daten nicht richtig zuweisen kann [b]jdata[/b]-Variable.
Ich habe im Allgemeinen Probleme damit, diese verschachtelten Objekte in etwas umzuwandeln, das ich analysieren kann. Wenn ich eine Zeichenfolge zuweise, wie im auskommentierten Abschnitt, kann ich JSON.parse ausführen und alles funktioniert, aber dann ist raw_data kein Objekt, sondern einfach die Zeichenfolge. Aber bei dieser asynchronen Funktion steht Folgendes in den [b]raw_data[/b]:
[code]Promise { : "pending" }
: "fulfilled"
: Object { lux: 0, pressure: 0, TVOC: 0, … }
: Promise.prototype { … }
[/code]
[b]JD[/b] erhält ein [b]function[/b]-Objekt und ich sehe es nicht alle darin enthaltenen Daten.
Ich habe verschiedene Beiträge in diesem Forum durchgesehen und aufgrund der Tatsache, dass ich normalerweise nicht in JS programmiere, habe ich Probleme zu verstehen, wie man eine Zeichenfolge aus diesem Versprechensobjekt herauszieht.
Können Sie mir dabei helfen?