Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: AJAX, scripti + PHP

Sivun loppuun

mika132 [06.03.2011 12:18:30]

#

Eli siis ajaxillä teen erästä systeemiä johon tarvitsen hieman nyt apua..

Tarkoitus on että palautettava tieto tallennetaan php muuttujaan, mutta se e i ihan onnistu ainakaan nykyisellä systeemilläni.

<?php $point_where_are_start_x_max ?> = Pyynto.responseText;

osaisiko joku kertoa, että miten voin tallentaa tuon pyynto responseText muuttujan tiedon johonkin php muuttujaan?

Triton [06.03.2011 12:28:53]

#

PHP:llä lähetettyyn tietoon pääsee käsiksi GET tai POST taulukoilla, sen mukaan, että kummalla metodilla olet se clientiltä serverille lähettänyt.

Edit. Eli tuolla tavalla, jota tuossa yrität, ei tule koskaan onnistumaan, koska PHP suoritetaan aina ennen JavaScriptiä... Ja tuo ajax osuus tulisi tehdä jQuerylla tai muulla JS-frameworkilla.

Edit2. Tuo responseText-attribuutti paluttaa JavaScript-ohjelmalla serverin lähettämän vastauksen, eikä toisinpäin.

mika132 [06.03.2011 12:34:50]

#

Tuo on jo vastauksen käsittely aluetta.

osaan kyllä pyynnön lähettää ja lähetän sen getillä:

function suoritaPyynto()
{
    alustaPyynto();
    Pyynto.onreadystatechange = kasitteleVastaus;

	<?php
    echo 'Pyynto.open("GET", "tarkista.php?maksimipaasy='.$point_where_are_start_x_max.'", true);';
	?>
    Pyynto.send(null);
}

ja tarkista.php tiedostossa on näin:

<?php
$maksimipaasy = $_GET["maksimipaasy"];
$maksimipaasy+=1;
echo "$maksimipaasy";
?>

Mutta paluu tieto pitäisi saada PHP muuttujaan. Eli

$muuttuja = Pyynto.responseText

esim tällä hetkellä koitin:

function kasitteleVastaus()
{
    if(Pyynto.readyState == 4)
    {
        if(Pyynto.status == 200)
        {
			$point_where_are_start_x_max = Pyynto.responseText;
        }
        else
        {
            alert("Pyynnön suorituksessa on tapahtunut virhe!");
        }
    }
}

mutta ei tapahdu mitään vaikka kuinka painelisin nappulaa josta suoritus lähtee päälle.
mutta tuollaisenaan kun se ei toimi. =)

Triton [06.03.2011 12:38:00]

#

Tuollainen ei vain kerta kaikkiaan onnistu...

Triton kirjoitti:

Eli tuolla tavalla, jota tuossa yrität, ei tule koskaan onnistumaan, koska PHP suoritetaan aina ennen JavaScriptiä...

offtopic* Miksi sulla on tulostettava muuttuja lainausmerkkien sisällä tuossa yhessä esimerkissä?

mika132 [06.03.2011 12:43:13]

#

Se on osittain tapa eikä siihen ole mitään sen ihmeellisempää selitystä. Onneksi ei ole suuri rike.

Ja selvä.. yritän toista ratkaisua. Kiitos. =)

Triton [06.03.2011 12:51:42]

#

Kun ajaxia käytetään, niin ideana yleensä on se, että JavaScriptillä sekä jollain merkintäkielellä toteutetaan se asiakaspuoli ja sitten PHP:llä, Javalla yms.. toteutetaan palvelinpuoli. Eli esim. tässä tapauksessa suotavaa olisi, että käsittelisit ihan JavaScriptillä tuon palvelimelta tulleen vastauksen ja muodostaisit DOMia ym.. käyttämällä uuden näkymän.

Mitä tuohon muuttujan tulostamiseen tulee, niin ei ainakaan anna kovin vakuuttavaa kuvaa taidosta, kun tulostaa pelkän muuttujan lainausmerkeissä. Vielä tuon ymmärtäisi jos se olisi keskellä merkkijonoa (tosin silloinkin ainakin itse käyttäisin {}-merkintää taikka sitten katenointia), muuta ei muuten.

The Alchemist [06.03.2011 12:59:33]

#

Lopeta tuo täysin mahdottomasta toimenpiteestä jankkaaminen ja yksinkertaisesti kerro, mitä aiot tehdä, niin me voimme kertoa, miten sen voi tehdä.

Viimeksi minulle vittuiltiin, kun tein tämän selväksi, mutta senkin uhalla teen tämän sinullekin selväksi:

PHP ei voi tietää JavaScriptistä yhtään mitään eikä JS voi tietää PHP:stä yhtään mitään. PHP suoritetaan palvelimella ja JavaScript selaimessa. PHP:lle JavaScript-koodi on aivan tavallista tekstiä kuten myös merkkijonot "kissa" ja "050-1234567". Katsomalla sivun lähdekoodia selaimessa taas näet sen, miltä sivu näyttää selaimelle ja sitä myöten myös JavaScriptille. Sivulla ei ole mitään viitettä PHP:stä.

JavaScriptillä saat välitettyä tietoa PHP:lle juurikin kolmannessa viestissä demonstroimillasi HTTP-pyynnöillä. En aio edes arvailla, mitä helkkaria yrität tarkoittaa "paluuarvon tallentamisella PHP-muuttujaan", kun paluuarvo on täsmälleen se, mitä PHP-koodissa tulostat sivulle pyyntöä käsitellessä.

mika132 [06.03.2011 14:35:26]

#

aivan.. ja sain jo toisen ratkaisutavan toimimaan. =)

Selainnen vielä olisi mielessä, että saako Javascriptillä jotenkin "varattua" muistia?

Siis kun tein mappi systeemin jossa nuolinäppäimistä kartta "liikahtaa" ja näkee muutakin kuin sen yhden pisteen. Siis saman tyylinen kuin travianin kartta.

Minulla kuitenkin kartassa käy niin että aina nuolta painaessa tulee pienoinen lataustauko.. tai välillä se on myös hieman pitempi. Eli olisiko jotain tapaa jolla voisi laskea koodinaatit lähistöstä ja ladata ne valmiiksi muistiin jolloin liikutettaessa karttaa se liikkuisi dynaamisemmin?

Triton [06.03.2011 15:18:58]

#

The Alchemist kirjoitti:

... eikä JS voi tietää PHP:stä yhtään mitään.

Tuo nyt ei suoranaisesti pidä paikkaansa, sillä JavaScriptiä voidaan jokseenkin muokata tulostamalla sitä PHP:llä, tosin en kyllä kovin montaa tarkoitusta keksi, että miksi näin pitäisi tehdä...

mika132: Oletko aivan varma, ettet ole ottanut liian suurta palaa? Tuollainen muistilla leikkiminen kuulostaa varsin kaukaa haetulta ja se ei onnistu skripti kielillä. Sitä paitsi tässäkin pätee sama juttu, kuin aikasemminkin on tullut esille. Miten JS voi tietää palvelinkoneen muistista mitään, kun sitä suoritetaan asiakaskoneella ja toisinpäin...

Grez [06.03.2011 15:49:49]

#

Triton kirjoitti:

Tuo nyt ei suoranaisesti pidä paikkaansa, sillä JavaScriptiä voidaan jokseenkin muokata tulostamalla sitä PHP:llä, tosin en kyllä kovin montaa tarkoitusta keksi, että miksi näin pitäisi tehdä...

No se javascript ei silti edelleenkään tiedä mitään PHP:stä vaan se tietää vain sen PHP:n muodostaman HTML-sivun.

Triton kirjoitti:

Tuollainen muistilla leikkiminen kuulostaa varsin kaukaa haetulta ja se ei onnistu skripti kielillä.

Mitäääh? Siis vallan hyvinhän Javascriptillä pystyy laskemaan tavaraa valmiiksi muistiin jos haluaa. Muistia voi varata määrittelemällä muuttujia jotka voi sisältää esim. olioita, taulukoita jne. Javascript voi myöskin käskeä selaimen lataamaan valmiiksi esim. kuvia palvelimelta, vaikka niitä ei vielä näytettäisikään käyttäjälle.

Triton [06.03.2011 19:07:10]

#

Grez kirjoitti:

Triton kirjoitti:

Tuo nyt ei suoranaisesti pidä paikkaansa, sillä JavaScriptiä voidaan jokseenkin muokata tulostamalla sitä PHP:llä, tosin en kyllä kovin montaa tarkoitusta keksi, että miksi näin pitäisi tehdä...

No se javascript ei silti edelleenkään tiedä mitään PHP:stä vaan se tietää vain sen PHP:n muodostaman HTML-sivun.

Niin no tuolla tarkoitinkin lähinnä sitä, että php:llä pystyy antamaa esim. JavaScriptin muuttujille arvoja tulostamalla niitä koodin sekaan ja sillä tavalla vaikuttamaan JS-skriptin toimintaan...

Grez kirjoitti:

Triton kirjoitti:

Tuollainen muistilla leikkiminen kuulostaa varsin kaukaa haetulta ja se ei onnistu skripti kielillä.

Mitäääh? Siis vallan hyvinhän Javascriptillä pystyy laskemaan tavaraa valmiiksi muistiin jos haluaa. Muistia voi varata määrittelemällä muuttujia jotka voi sisältää esim. olioita, taulukoita jne. Javascript voi myöskin käskeä selaimen lataamaan valmiiksi esim. kuvia palvelimelta, vaikka niitä ei vielä näytettäisikään käyttäjälle.

No juu, tässä kohtaan en tiedä, että mitä menin kirjoittamaan :D
Jotenkin ajattelin tämän muistilla leikkimisen olevan jotain muuta, kuin muuttujien käyttämistä, vaikka ne tosiaankin ovat sama asia. Itselleni tuli lähennä mieleen jotkin sellaiset toiminnot joihin olen törmännyt jossain basic-kielessä, että varataan erillinen "muistipala" käyttöön...


Sivun alkuun

Vastaus

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

Tietoa sivustosta