Diskuze: JSON soubor do proměné a možnost další práce
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
JSON by mel byt js string.
Melo by to jit nacist pres request jako json. Jak to mas.
String by mel jit pak pouzit primo pres eval. Neprijemne je, ze eval dela vic
nez to. kdyz to tam nekdo podstrci jiny js kod, funkci, eval ho vykona. A taky
je dobre si pohlidat, zda mas spravne kodovani znaku win/utf.
x = "{123:456}";
x = eval(x);
alert(x[123]); // alert(x['123'])
google = js decode json string
https://developer.mozilla.org/…s/JSON/parse
https://learncodeweb.com/…-javascript/
https://stackoverflow.com/…to-an-object
https://www.freecodecamp.org/…-javascript/
<script>
fetch('https://api.chucknorris.io/jokes/random?category=dev')
.then(res => res.json()) // the .json() method parses the JSON response into a JS object literal
.then(data => console.log(data));
fetch("./jokes.json", { mode: "no-cors" }) // disable CORS because path does not contain http(s)
.then((res) => res.json())
.then((data) => console.log(data));
const fs = require('fs');
const jokesFile = fs.readFileSync('./jokes.json', 'utf8');
const jokes = JSON.parse(jokesFile);
</script>
var dotaz = new XMLHttpRequest;
dotaz.open('GET','static/js/helpdesk.json',false)
dotaz.send(null)
jsoon=JSON.parse(dotaz.responseText)
dotaz=jsoon.dotaz
dotaz je json uložený do var, ale chtěl bych se zeptat jestli by nešlo něco co využívá jquery či čistý javascript a není to tak zastaralé jako XMLHttpRequest a uložit do proměné s kterou bych následně mohl pracovat nezávisle a vně nějaké funkce
Používat jQuery kvůli použití JSON je naprosto zbytečné. Řešení využívající metodu fetch v odpovědi Petera je pomocí čistého Javascriptu. Fetch je nová obdoba a alternativa XMLHttpRequest.
Já vím, že modernější je fetch oproti XMLHttpRequest, ale chtěl bych dostat ten json ven jako proměnou a to se mi s fetch nedaří
Neni mi jasne, co chces udelat. Vytvor jednoduchy program s nejakym demo jsonem a nekde to vystav. jsfiffle.net nebo u sebe. Co ti pise js konzola za chybu?
Do jineho okna muzes predat js promenou. Pokud tam neni omezeni CORS.
Do jineho souboru muzes predat jen string, treba ten jsonovy.
Do html stranky lze nacist json jako js kod. (jakoze, nemusis to tahat
requestem, pokud se ta data nemeni)
<script>
var x = "<?php echo json_endode(array(1,2,3)) ?>";
</script>
<div>
<?php echo json_endode(array(1,2,3)) ?>
</div>
<div>
<?php echo htmlspecialchars(file_get_content('http://seznam.cz')) ?>
</div>
Aha, teď koukám na ten tvůj kód. Problém je, že fetch se vždy volá asynchronně, XMLHttpRequest nastavuješ, aby byl synchronní (3. parametr metody open).
Asynchronní volání funguje tak, že se kód vykoná, ale nečeká na jeho dokončení. Takže se jde rovnou dál, v tvém případě na výpis řetězce do konzole. V tu dobu ještě nebyl asynchronní kód dokončen, tak proměnná zůstává prázdná. Řešení je využít nějaký callback.
Asynchronní XMLHttpRequest https://www.w3schools.com/js/tryit.asp?…
Příklad fetch:
fetch('http://example.com/movies.json')
.then((response) => {
return response.json();
})
.then((myJson) => {
console.log(myJson);
});
Děkuji, za odpověď a pro mé účely budu asi muset ty data dát do databáze. Vůbec jsem nevěděl, že asynchronní funkce existují děkuji za vysvětlení
Pouziva se to pro stahovani obrazku, treba. Dobre je videt na pomalem internetu, jak se postupne nacitaji obrazky.
Zobrazeno 11 zpráv z 11.