Eli tarkoitus on ajaa koodi selaimen konsoli työkalun avulla.
function loadData(url, action) { var xhttp = new XMLHttpRequest(); xhttp.onreadystatechange = action xhttp.open("GET", url); xhttp.setRequestHeader("X-ESA-API-Key", "ROBOT"); xhttp.setRequestHeader("Content-Type", "application/json"); xhttp.setRequestHeader("Accept", "application/json"); xhttp.send(); console.log('Vastaus:\n' + xhttp.responseText) // ei tulosta vastausta console.log('Metodi "loadVeikkausData" on suoritettu loppuun') } loadData('www.exaampleUrl.com', function() { if (this.readyState == 4 && this.status == 200) { var data = JSON.parse(this.responseText) console.log(data) // Tehdään jotain vastauksella } }) // Muutama kysely lisää // Tehdään jotain vastauksilla console.log('Tiedosto on suoritettu loppuun')
Tästä koodista on riisuttu kaikki ylimääräinen pois, sillä muu koodi toimii haluamallani tavalla.
Ongelmani on lähinnä se, etten saa palvelimen lähettämää vastausta ulos "xhttp"-oliosta myöhempää käsittelyä varten. Useampi kysely siksi, saan edellisestä kyselystä tietoja, joita käytän jatko kyselyiden suorittamiseen.
Tarkoituksena olisi käsitellä kyselyiden vastauksena saatua dataa vasta, kun kaikki tieto on kerätty.
XMLHttpRequest
on oletuksena asynkroninen, mikä tarkoittaa, että send()
ei odota HTTP-vastausta. Vastauksen saat käsiisi callback-funktiossa, kuten olet tehnytkin.
Jos haluat tehdä synkronisen HTTP-kyselyn, anna open-metodille kolmantena parametrinä false: xhttp.open("GET", url, false);
.
Useamman kyselyn suorittaminen onnistuu kyllä asynkronisestikin. Voit esimerkiksi tehdä seuraavan kyselyn tuolta callback-funktion sisältä.
Tämä selittää tuon, miksei toi "xhttp.responseText" palauttanut tulosta, kiitos! Sehän oli varsin pienestä kiinni.
Periaatteessa varmasti saisi tehtyä suorittamalla uuden kyselyn aina tuon callback-funktion sisältä.
Päädyin tässä tekemään jatko kyselyt silmukassa. Tuolla ekalla kyselyllä saan toistakymmentä parametria, joilla teen uudet kyselyt.
Kolmannella kierrokella (mikäli tarvitsisin) onkin sitten jo reilusti yli puolensataa uutta parametria, joiden avulla voisi vielä hakea lisää tietoa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.