Ajax polopate
Ajax polopate
prosím mohol by mi tento AJAX spôsob bez refreshnutia stránky niekto podrobne vysveliť? ako skúšam, tak skúšam stále sa neviem dopracovať k výsledku...
predstavujem si to tak, proste že mám v php premennú, a keď sa za behu aplikácie zmení jej hodnota, tak sa to neprejaví refreshom...proste potrebujem zmeniť hodnotu v php premennej, alebo skôr aktualizovať bez refreshu...AJAX mi nie je moc známy, len teraz s ním volačo potrebujem...tak
dakujem za akekolvek rady.
predstavujem si to tak, proste že mám v php premennú, a keď sa za behu aplikácie zmení jej hodnota, tak sa to neprejaví refreshom...proste potrebujem zmeniť hodnotu v php premennej, alebo skôr aktualizovať bez refreshu...AJAX mi nie je moc známy, len teraz s ním volačo potrebujem...tak
dakujem za akekolvek rady.
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
mám pocit že ani nemáš jasno o čo v ajaxe ide, nemôžeš si len tak za behu php meniť jeho premenné. Môžeš iba spracovávať vstupy z php na serveri a vrátiť výstup bez refreshu stránky do nejakej jej časti. Buď si to iba chaoticky napísal, alebo som nepochopil ja. Na w3c je ale veľmi pekne spravený tutorial pre úplnych začiatočníkov
máš pravdu zle som to sformuloval, potrebujem presne to čo si povedal ty.audiotrack napísal:mám pocit že ani nemáš jasno o čo v ajaxe ide, nemôžeš si len tak za behu php meniť jeho premenné. Môžeš iba spracovávať vstupy z php na serveri a vrátiť výstup bez refreshu stránky do nejakej jej časti. Buď si to iba chaoticky napísal, alebo som nepochopil ja. Na w3c je ale veľmi pekne spravený tutorial pre úplnych začiatočníkov
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
index.html ajax.php
to tak v skratke a jednoduchosti (možno tu budú preklepy, ale je to písané z hlavy. Na pochopenie ti to ale bude stačiť). Ak ho chceš ale používať viac a efektívnejšie, je celkom dosť pekných frameworkov čo ti prácu s ajaxom uľahčuje.
Kód: Vybrať všetko
<html>
<body>
<script type="text/javascript">
function send()
{
var xmlhttp;
var hodnota = document.getElementById('hodnota').value;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
{
document.getElementById(reload').innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax.php?hodnota="+hodnota,true);
xmlhttp.send(null);
}
</script>
nejaky text...
<div id="reload">sem pride hodnota</div>
<input type="text" name="hodnota" /><input type="button" onclick="send()" />
znovu text ...
</body>
</html>Kód: Vybrať všetko
<?php
echo $_GET['hodnota'];
?>Ok diky, ja som sa to teda včera už docela dobre naučil a funguje mi to:)
len jediný problém mám vo vrátení výsledku naspäť, teda cez object.responseText pretože odosielam, ale ja odosielam cez POST tie data, no a ja odosielam dve premenne naraz, a response text berie to čo je echo a vždy mi vráti hodnotu spoločne, ale ja to potrebujem oddelit v JS na dve samostatne premenne zase...mam pouzit explode alebo niečo také?
a ako sa brániť proti prepisu hodnôt? ja totiž, tie hodnoty nesmie nikto prepisovať...a zatial som si v hlave nesformuloval žiaden postup ako tomu zabrániť, kedže tie hodnoty sa premielaju cez JS nemám ani ako s PHP fixovať to čo sa tam objavilo...
len jediný problém mám vo vrátení výsledku naspäť, teda cez object.responseText pretože odosielam, ale ja odosielam cez POST tie data, no a ja odosielam dve premenne naraz, a response text berie to čo je echo a vždy mi vráti hodnotu spoločne, ale ja to potrebujem oddelit v JS na dve samostatne premenne zase...mam pouzit explode alebo niečo také?
a ako sa brániť proti prepisu hodnôt? ja totiž, tie hodnoty nesmie nikto prepisovať...a zatial som si v hlave nesformuloval žiaden postup ako tomu zabrániť, kedže tie hodnoty sa premielaju cez JS nemám ani ako s PHP fixovať to čo sa tam objavilo...
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
ok dik uz to mám...
len ešte jednu vecičku by som chcel. ked dam odosladat (prebehne to cez ten php datovy subor atd) tak tam mam loading div, a chcem aby bola cakacia doba nejaka...
volám ho takto pri odosielani:
a tu je funkcia ktora ho zrusi:
to funguje, ja chcem ale dosiahnut aby sa muselo tiez 3000 (teda 3 sekundy) čakať aj na to nez sa zobrazia tie textResponse data co prisli cez ten request.
to sa mi ale vôbec nedarí, možno to zle len zapisujem...vypís dat je takto:
pricom text_box je taky div plny roznych hodnot, tam sa ulozia nacitane data...skusal som k tomuto Ifu dat nejake dalsie setimeouty ale nic, neviem to spravne zapisat mozno....
ocenim dalsie rady dik.
len ešte jednu vecičku by som chcel. ked dam odosladat (prebehne to cez ten php datovy subor atd) tak tam mam loading div, a chcem aby bola cakacia doba nejaka...
volám ho takto pri odosielani:
Kód: Vybrať všetko
hide_div.style.display="block";
setTimeout('lol()', 3000);Kód: Vybrať všetko
var hide_div = document.getElementById('id');
function lol(){
hide_div.style.display='none';
}
to sa mi ale vôbec nedarí, možno to zle len zapisujem...vypís dat je takto:
Kód: Vybrať všetko
if (level.innerHTML == 0){
text_box.style.display='none';
}else{
text_box.style.display='block';
}ocenim dalsie rady dik.
Kód: Vybrať všetko
-
audiotrack
VIP
- Príspevky: 25958
- Registrovaný: 09 sep 2005, 18:39
- Kontaktovať používateľa:
neviem či je spomalovanie webu tou správnou filozofiu, načo je dobré niečo čo už máš držať a hodiť používateľovi až o 3 sekundy? Ale k veci. Táto podmienka level.innerHTML == 0 nemá zmysel. Neviem čo je level a čo vlastne tou podmienkou bolo myslené, lebo som ani nepochopil o čo presne ti ide. Ak chceš vypísať response text po 3 sekundách, vypadalo by to nejak takto: pričom cakaj_a_vypis je funkcia ktorá počká 3 sekundy a potom hodí text tam kde potrebuješ
Kód: Vybrať všetko
.
.
.
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
{
cakaj_a_vypis(xmlhttp.responseText);
}
}
.
.
.