Autor | Zpráva | ||
---|---|---|---|
Kendy Bojler Profil |
#1 · Zasláno: 7. 11. 2012, 20:49:54
Dobrý den,
při práci na svém webu jsem narazil na problém. Při práci požívám pouze HTML, CSS a PHP, o JavaScriptu nic moc nevím, proto pokládám tento dotaz. Mám na stránkách odstavec p, ve kterém je vypsáno číslo z databáze. Pokud bych mohl požádat, potřeboval bych návod, v případě dobrého srdce celý script :D, jak zařídit, aby se každou vteřinu toto číslo vytáhlo z databáze znovu, a vepsalo se do odstavce bez reloadu stránky. Za všechny odpovědi a rady předem děkuji. |
||
Someone Profil |
<html> <head> <script> function reloadOdstavce(id) { var http = new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHttp"); if (http) { http.open("GET","ajax.php?getNumber",true); http.onreadystatechange = function() { if (http.readyState == 4 && http.status == 200) { document.getElementById(id).innerHTML = http.responseText; } } http.send(null); } } window.onload = function() { reloadOdstavce("mujOdstavec"); setInterval(function(){ reloadOdstavce("mujOdstavec"); },1000); } </script> </head> <body> <p id="mujOdstavec"></p> </body> </html> SOUBOR AJAX.PHP <?php if (isset($_GET['getNumber'])) { // dotaz na získání čísla echo $cislo; } ?> Snad jsem se někde neupsal. Musím doporučit nastudovat javascript, protože až se objeví nějaký další problém z této oblasti nikdo Vám to tu takhle celé pod nos nenaservíruje. I ode mne je to vyjímečné. |
||
Kendy Bojler Profil |
#3 · Zasláno: 7. 11. 2012, 21:43:27
Velice děkuji za odpověď.
Myslel jsem, že zkopírování tohoto kódu s doplněním jednoho dotazu nebude nic co bych nezvládl. Nyní si však připadám dost trapně. Nevím co jsem mohl pokazit, ale číslo se bohužel nezobrazuje. Mohl bych požádat o chvilku Vašeho času abyste mi pomohl zjisti kde dělám chybu? Velice děkuji. |
||
pcmanik Profil |
#4 · Zasláno: 7. 11. 2012, 21:56:25
Kendy Bojler:
Do getElementById ste namiesto id dali id daného paragrafu? |
||
panther Profil |
#5 · Zasláno: 7. 11. 2012, 22:00:32
pcmanik:
tam to id je dobře - je to parametr té funkce. Při volání je tam správné ID odstavce (v ukázce zde uvedené).
Kendy Bojler: dodej odkaz na stránku, kde je tvé dílo k vidění. |
||
Kendy Bojler Profil |
Děkuji za odpověď.
Skript jsem upravil dle vašich rad, bohužel, stále přetrvává stejný problém. Mohl bych poprosit o radu? <head> <script> function reloadOdstavce(id) { var http = new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHttp"); if (http) { http.open("GET","ajax.php?getNumber",true); http.onreadystatechange = function() { if (http.readyState == 7 && http.status == 200) { document.getElementsById(id).innerHTML = http.responseText; } } http.send(null); } } window.onload = function() { reloadOdstavce("mujOdstavec"); setInterval(function(){ reloadOdstavce("mujOdstavec"); },1000); } </script> </head> <body> <p id="mujOdstavec"></p> </body> </html> Soubor: ajax.php <?php include "pripojenikdatabazi.php"; mysql_query("SET CHARACTER SET cp1250"); $cook=($_COOKIE["prihlaseny"]); ?> <?php if (isset($_GET['getNumber'])) { $vysledek=mysql_query("SELECT `kredit` FROM `wenom_cz_main`.`clenove` WHERE `email` = '$cook' LIMIT 0 , 1 "); $zaznam=MySQL_Fetch_Array($vysledek); $cislo=$zaznam["kredit"]; echo $cislo; } ?> <?php include "odpojenioddatabaze.php"; ?> Omlouvám se, že neuvádím odkaz na stránky, ale chtěl bych je nechat v anonymitě. |
||
Someone Profil |
Ah, tady je :D, omluvám se, asi jsem v době psaní scriptu myslel na něco jiného. Podmínka má samozřejmě vypadat takto
if (http.readyState == 4 && http.status == 200) {} upravil jsem i v původním scriptu |
||
Kendy Bojler Profil |
Hlavička má tedy vypadat takto?
< <script> function reloadOdstavce(id) { var http = new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHttp"); if (http) { http.open("GET","ajax.php?getNumber",true); http.onreadystatechange = function() { if (http.readyState == 4 && http.status == 200) { document.getElementsById(id).innerHTML = http.responseText; } } http.send(null); } } window.onload = function() { reloadOdstavce("mujOdstavec"); setInterval(function(){ reloadOdstavce("mujOdstavec"); },1000); } </script Je mi to sice opravdu trapné, ale pořád mi to nejde ... :D |
||
Someone Profil |
Ano, místo 7 tam je 4.
Další věc, které jsem si nevšiml: document.getElementsById(id).innerHTML = http.responseText; stačí odmazat to S.
Tentokrát jsem si to pro jistotu vyzkoušel i na serveru a mělo bý to být vše. |
||
Kendy Bojler Profil |
#10 · Zasláno: 7. 11. 2012, 22:37:46
Mockrát Vám děkuji za Vaši ochotu a pomoc. Velice si vážím takových lidí jako jste Vy.
S pozdravem: Kendy Bojler |
||
Chamurappi Profil |
#11 · Zasláno: 7. 11. 2012, 23:27:36
Reaguji na Someone:
„var http = new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHttp");“ S údivem pozoruji snahy o zkrácení inicializace XMLHttpRequest u… jak myslíš, že zareaguje prohlížeč, který první variantu nepodporuje?
|
||
_es Profil |
#12 · Zasláno: 8. 11. 2012, 09:32:01
Kendy Bojler:
„jak zařídit, aby se každou vteřinu toto číslo vytáhlo z databáze znovu, a vepsalo se do odstavce bez reloadu stránky.“ Zamyslel si sa nad tým, či to je dobrý nápad? |
||
Kendy Bojler Profil |
Zdravím, chtěl bych se ještě zeptat,
jak by se prosím Vás dalo zařídit, aby se toto číslo zobrazovalo na stránce na dvou místech najednou? Velice děkuji za reakce. |
||
Časová prodleva: 8 dní
|
|||
Kendy Bojler Profil |
#14 · Zasláno: 18. 11. 2012, 09:24:23
Zdravím ještě jednou,
měl bych ještě jeden problém ... jak musím upravit kód do IE, aby fungoval? Do kódu jsem napsal: <?php if (ereg(".*MSIE*", $_SERVER['HTTP_USER_AGENT'])) { echo ('<script> function reloadOdstavce(id) { var http = new ActiveXObject("Microsoft.XMLHttp"); if (http) { http.open("GET","ajax.php?getNumber",true); http.onreadystatechange = function() { if (http.readyState == 4 && http.status == 200) { document.getElementById(id).innerHTML = http.responseText; } } http.send(null); } } window.onload = function() { reloadOdstavce("mujOdstavec"); setInterval(function(){ reloadOdstavce("mujOdstavec"); },2000); } </script>'); } else { echo ('<script> function reloadOdstavce(id) { var http = new XMLHttpRequest(); if (http) { http.open("GET","ajax.php?getNumber",true); http.onreadystatechange = function() { if (http.readyState == 4 && http.status == 200) { document.getElementById(id).innerHTML = http.responseText; } } http.send(null); } } window.onload = function() { reloadOdstavce("mujOdstavec"); setInterval(function(){ reloadOdstavce("mujOdstavec"); },2000); } </script>'); }; ?> Děkuji, Kendy Bojler |
||
Davex Profil |
V Exploreru 7 a 8 to funguje.
Jinak servírovat různé skripty podle User Agenta je hodně špatné řešení. Použij raději funkci pro AJAX od Chamurappiho. |
||
Kendy Bojler Profil |
#16 · Zasláno: 18. 11. 2012, 11:28:04
A pokud používám IE9 ... ?
Děkuji. |
||
Kendy Bojler Profil |
Proč vlastně tenhle script v IE9 nefunguje a místo toho se zobrazuje prázdné místo?
Poprosil bych tedy o radu jak kód zprovoznit i v IE9. Děkuji velice. |
||
Davex Profil |
V jiném prohlížeči to funguje? Nechybí element s
id="mujOdstavec" ? Když se přepneš do vývojářských nástrojů F12, tak jsou nějaké chyby v konzoli?
|
||
Kendy Bojler Profil |
#19 · Zasláno: 19. 11. 2012, 00:16:34
Funguje to v Opeře, Mozile a Chromu, ale v IE to nejde v žádné verzi ... ano <div id="mujOdstavec"> zde mám, v konzoli žádné chyby nejsou.
Tušíte co může být špatně? Děkuji, Kendy Bojler |
||
Davex Profil |
#20 · Zasláno: 19. 11. 2012, 21:04:07
Pokud není vypnutý JavaScript, tak už vážně netuším, protože mi to funguje i v devítce.
|
||
_es Profil |
Kendy Bojler:
„Tušíte co může být špatně?“ Je to celé zle, radu pre správne riešenie si dostal ([#15] Davex). V IE môže byť trebárs vypnutá podpora pre ActiveXObject("Microsoft.XMLHttp") a potom to samozrejme funkčné nebude. Alebo prehliadač či sieť nestíha nezmyselné tempo 30 HTTP dotazov za minútu.
|
||
Časová prodleva: 11 let
|
0