Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Alert-ikkuna ongelma

novari [19.02.2011 13:56:14]

#

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.

Macro [19.02.2011 14:00:50]

#

Ohjaatko sivun toisaalle? PHP suoritetaan ennen Javascriptiä, niin sivu siirtyy ennen kuin Javascriptillä ehditään tehdä mitään.

novari [19.02.2011 14:13:40]

#

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?

Hennkka [19.02.2011 14:29:21]

#

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.

The Alchemist [19.02.2011 14:31:09]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta