![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Kod ma za zadanie wczytywac na bierząco dane z bazy danych:
skrypt.js window.onload = function() { setTimeout("post();",1000); } function post() { var xhr = createXMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState==4) { if (xhr.status==200) { var odpowiedz = xhr.responseText; $("results").innerHTML = odpowiedz; } else { alert("BŁĄD:"+xhr.status); } } } xhr.open("POST", "skrypt.php", true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send("param=1"); } function createXMLHttpRequest() { try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {} try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} try { return new XMLHttpRequest(); } catch(e) {} alert("Brak obsługi XMLHttpRequest"); return null; } //To teoretycznie działa Potem krutkie php: function start(){ mysql_connect('localhost','qwe','haslo'); mysql_select_db('qwe'); $dane = mysql_fetch_assoc(mysql_query("SELECT * FROM test WHERE id = '1'")); return $dane['test']; } echo start(); I co się dzieje: po określonym czasie funkcja php jest odpalana i z bazy danych wczytuje odpowiadnią wartość, więc wszytko teoretycznie ok. Jednak teoretycznie funkcja miała odpalać się co 1000 milisekund przez co miała wychwytywać ewentualne zmiany w bazie danych ale nic takiego nie następuje. Trzeba odświarzyć stronę żeby zmiany w bazie danych zostały wykryte. Co zrobić zeby na bierząco skrypt zmieniał zawartość strony w zależności od zawartości bazy danych? |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
a co to jest (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Kod $("results").innerHTML = odpowiedz; bo u mnie wywołuje błąd składni JS... |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
InnerHTML wkłada kod ktml do danego pojemnika.
Potrzebujesz mieć jakiś element blokowy (div) o id=results |
|
|
![]()
Post
#4
|
|
Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
no wszystko pięknie, ale przecież:
Kod // nie $("results").innerHTML = odpowiedz; // tylko document.getElementById('results').innerHTML = odpowiedz; czy ja czegoś nie kumam?? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 22.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dobrze mówisz. Ale nie w tym jest problem. Funkcja działa ale jeden raz, znaczy po tym jak zmienie coś w bazie danych to na stronie nie ma zmian a chce żeby wykrywał zmiany w bazie danych.
Co do tego: $("results").innerHTML = odpowiedz; to mam funkcje napisaną function $(id){ return document.getElementById(id); } OK. Problem rozwiązałem. Nie udało mi się z setTimeout ale Kod window.onload = function() { window.setInterval("post();",1000); } poskutkowało. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 23.02.2005 Ostrzeżenie: (10%) ![]() ![]() |
Działa jeden raz, bo tak ma działać funkcja setTimeout(). Musisz użyć setInterval().
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 14:52 |