Autor | Zpráva | ||
---|---|---|---|
twenty-six Profil |
#1 · Zasláno: 20. 12. 2011, 12:00:21
Zdravim vsechny ptrichozi.
Muj problem je to, ze nevim jak valot z JavaScriptu php funkci. mam setInterval ktery se opakuje kazde 2 vteriny a ja pokazde potrebuji poslat dotaz do MySQL databaze, takze v tom setInterval potrebuji volati funkci PHP Pripoj_k_DB(server, jmeno, heslo). setInterval(function gauge() { gm_options.value = 5 ; gm.setOptions(gm_options); gm.draw(); }, 2000); |
||
_es Profil |
#2 · Zasláno: 20. 12. 2011, 13:13:38
twenty-six:
PHP, Javascript, PHP |
||
twenty-six Profil |
#3 · Zasláno: 21. 12. 2011, 01:17:28
Tak nakonec jsem to vyřešil AJAXem.
Ma straně klienta jsem volal soubor php, ve které se mi generoval na serveru XML dokument a ten jsem si na klientské straně rozparsoval a jednotlivé části uložil do proměnných. Ale protože se jednalo o číselné hodnoty, tak jsem je ještě po přenosu musel převést zpět na číslo pomocí parseFloat(); Klient (JavaScript) function Prenos() { if (rReq.readyState == 4 || rReq.readyState == 0) { i = !i; document.getElementById("pocDiv").innerHTML = i; rReq.open("GET", 'inner/xml.php', true); rReq.onreadystatechange = ZmenaStavu; rReq.send(null); } } function ZmenaStavu() { if (rReq.readyState == 4) { var chat_div = document.getElementById('div_chat'); var xmldoc = rReq.responseXML; var uzly = xmldoc.getElementsByTagName("DATA"); var t = uzly[0].getElementsByTagName("TEPLOTA"); teplotaGauge = parseFloat(t[0].firstChild.nodeValue); var p = uzly[0].getElementsByTagName("TLAK"); tlakGauge = parseFloat(p[0].firstChild.nodeValue); . . . . var gm_temp = new Gauge( document.getElementById( 'teplota'), gm_options_temp ); setInterval(function gauge_temp() { gm_options_temp.value = teplotaGauge ; // tady vkládám získané hodnoty gm_temp.setOptions(gm_options_temp); gm_temp.draw(); }, 2000); Server(PHP) xml.php <?php header("Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); header("Cache-Control: no-cache, must-revalidate" ); header("Pragma: no-cache" ); header("Content-Type: text/xml; charset=utf-8"); . . . . . //Generování odpovědi XML. $xml = '<?xml version="1.0" ?><root>'; $xml .= '<DATA id="' . $pocet_radku_teplota . '">'; $xml .= '<TEPLOTA>' . $teplota . '</TEPLOTA>'; $xml .= '<TLAK>' . $tlak . '</TLAK>'; $xml .= '</DATA>'; $xml .= '</root>'; echo $xml; ?> |
||
_es Profil |
#4 · Zasláno: 21. 12. 2011, 01:58:29
twenty-six:
„mam setInterval ktery se opakuje kazde 2 vteriny a ja pokazde potrebuji poslat dotaz do MySQL databaze“ Naozaj je potrebné každé dve sekundy zo serveru niečo sťahovať? Okrem toho, naozaj zo serveru každé dve sekundy niečo sťahuješ? Lebo z volania funkcie setInterval v tvojom kóde to nie je isté, teda čo vlastne robia metódy setOptions a draw .
|
||
twenty-six Profil |
#5 · Zasláno: 21. 12. 2011, 10:01:06
Samozřejmě že v budoucnu není potřeba stahovat ze serveru každé dvě vteřiny, ale teď potřebuji vidět, že to pravidelně pracuje. Potom tam bude interval třeba 5 minut. Je tam ještě jeden setInterval, který volá funkci Prenos(), kterou sahám na serverou část. Část kodu kde je setOptions jsem uvedlo proto, aby bylo vidět, kde používám proměnou s hodnotou získanou z databáze a draw() je funkce která mi potom vykresluje v CANVASU gauge meter jehož kód je ke stažení zde http://code.google.com/p/jsgauge/
|
||
Časová prodleva: 12 let
|
0