Saako javascriptin alert viesti-ikkunan ilmoittamaan viestin ilman tapahtumankäsittelyä?
Print käskyn tilalle tulisi alert-ikkuna.
print('Kuva tallennettu palvelimelle.'); echo"<script type=\"text/javascript\"> alert(\"Kuva on tallennettu palvelimelle.\"); </script> ";
Tuollain se ei ainakaan toimi joten missä teen väärin?
Javascript ei ole hallussa niin kuin huomaatte.
HTML ja body tagit on koodin alussa ja lopussa.
Ohjaatko sivun toisaalle? PHP suoritetaan ennen Javascriptiä, niin sivu siirtyy ennen kuin Javascriptillä ehditään tehdä mitään.
Joo, toisaalle mennään. Tuo alert ei pysäytä ohjelmaa? Täytyykö php:n koodissa tarkistaa paluu arvo ennen kuin siirrytään muualle? Jos, niin miten se tehdään?
PHP suoritetaan palvelimella ennen JavaScriptiä, joka suoritetaan selaimessa. Tuo sinun koodi vain kertoo selaimelle, että kun tuo kohta latautuu, siinä kuuluu näyttää alertti. Tutkippas sitä HTML:ää, jonka selain tulkitsee. PHP:stä ei voi näyttää alerttia.
Eli järjestelmä toimii siten, että ensin palvelin suorittaa tuon PHP:n, joka kirjoittaa selaimelle sen, mitä echolla tulostat. Tässä vaiheessa PHP:n suoritus loppuu. Sitten selain lukee palvelimen lähettämän tekstin ja näyttää tuon alertin.
PHP ja JavaScript ovat toisilleen täysin tuntemattomia. PHP ei voi tietää mitään JavaScriptin tekemisistä eikä JS vastaavasti mitään PHP:stä.
Jos haluat näyttää käyttäjälle ilmoituksen, niin se pitää hoitaa sivulla, jonne käyttäjä lopuksi siirretään. Tämän voi toteuttaa esimerkiksi niin, että lisäät urliin ylimääräisen GET-muuttujan.
header('Location: valmis.php?kuva_tallennettu=1');
Sitten vain valmis.php:ssä tarkistat, että jos löytyy $_GET['kuva_tallennettu'], niin näytät jonkin viestin.
Voin kertoa sen verran, että JavaScript-alertti on täydellisen väärä tapa näyttää kyseinen viesti. Popupit ovat melkein aina väärä ratkaisu mihin tahansa ei-kriittiseen asiaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.