Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: XMLHTTPRequest i dziwny błąd
Forum PHP.pl > Forum > XML, AJAX > AJAX
simple programmer
Witam,
na potrzeby nauczenia się XMLHTTP zrobiłem prosty przykład, który pobiera i zapisuje dane do bazy.
Link do skryptu:
http://serwer123.ddl2.pl/AJAX/baza.html
I teraz tak:
Skrypt pobiera, zapisuje ale po paru sekundach zaczyna głupieć - wysyła 100 zapytań na sekundę (tak, serio biggrin.gif), a Firebug wyrzuca 200 błędów po paru sekundach takiego stanu.

Kody:
baza.html
W pliku xmlhttp.js mam utworzenie kontrolki XMLHTTP.
  1. <script src="xmlhttp.js"></script>
  2. var http;
  3. http = getXMLHttpRequest();
  4. function status() {
  5. if (http.readyState == 4) {
  6. if (http.status == 200) {
  7. document.getElementById('status').innerHTML = http.responseText;
  8. };
  9. };
  10. };
  11. function wyslij(text) {
  12. http.open('GET', 'dodaj7.php?add='+text, true);
  13. http.onreadystatechange = status;
  14. http.send();
  15. };
  16. function baza() {
  17. if (http.readyState == 4) {
  18. if (http.status == 200) {
  19. document.getElementById('baza').innerHTML = http.responseText;
  20. };
  21. };
  22. };
  23. function czytaj() {
  24. http.open('GET', 'czytaj.php', true);
  25. http.onreadystatechange = baza;
  26. http.send();
  27. setInterval('czytaj()', 2000);
  28. };
  29. <body onLoad="czytaj()">
  30. <br /><br />
  31. <input type=input id=dane><br>
  32. <input type="button" value="Zapisz" onClick="wyslij(getElementById('dane').value)"<br>
  33. <div id=status></div><br><br /><div id="baza" style="position: static;"></div>


dodaj7.php
  1. <?php
  2. $dane = htmlspecialchars($_GET['add']);
  3. $con = mysql_connect('localhost','serwer123_base','haslo');
  4. mysql_select_db('serwer123_base');
  5. mysql_query('INSERT INTO test VALUES ("'.$dane.'")');
  6. echo('Dodano...');
  7. ?>


czytaj.php
  1. <?php
  2. $con = mysql_connect('localhost','serwer123_base','haslo');
  3. mysql_select_db('serwer123_base');
  4. $pob = mysql_query('SELECT * FROM test');
  5. while($row = mysql_fetch_array($pob)) {
  6. echo($row['pole1'].'<br>');
  7. };
  8. ?>

Dopiero od dziś bawię się czystym HTTPRequest.
Co tu jest źle, że system zaczyna wariować?
Pozdrawiam
mrok
Troche strzelam;)
w jakim celu uzywasz
Cytat
setInterval('czytaj()', 2000);

to sprawia ze czytaj wykonuje sie co 2 sekundy.
Jak to poprawisz(wykomentujesz) to zawartosc bazy powinna wyswietlic sie tylko raz i bedzie mozna zobaczyc co za exception tam leci.

Pozdrawiam
simple programmer
Używam tego, aby co 2 sekundy pobierać dane z bazy, a potem je wyświetlać.
Spróbuję to usunąć i zobaczę co wyjdzie.
Landon
  1. function czytaj() {
  2. http.open('GET', 'czytaj.php', true);
  3. http.onreadystatechange = baza;
  4. http.send();
  5. setInterval('czytaj()', 2000);
  6. };


nie możesz tego tak zrobić to sie wykonuje coraz wiece razy lepiej zrób

  1. function czytaj() {
  2. http.open('GET', 'czytaj.php', true);
  3. http.onreadystatechange = baza;
  4. http.send();
  5. };
  6.  
  7. function read() {
  8. setInterval('czytaj()', 2000);
  9. }


i wywołaj read()
simple programmer
Jak zwykle można na Was liczyć smile.gif
Działa, dzięki za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.