![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam taki kod na pobieranie co 1 sekunde danych z bazy danych: Kod <script type="text/javascript"> //Odświerzanie licznika On-line //<![CDATA[ var ajax_method = typeof XMLHttpRequest == "undefined"?new ActiveXObject('Microsoft.XMLHttp'):new XMLHttpRequest(); function aktu() { wczytaj_licznik(); setTimeout("aktu()", 1000); } function synch(online) { document.getElementById("online").innerHTML = ajax_method.responseText; } function wczytaj_licznik() { ajax_method.onreadystatechange = function(){ if (ajax_method.readyState == 4 && ajax_method.status == 200) { synch(ajax_method.responseText); } }; ajax_method.open( "GET", 'online.php' ); ajax_method.send(null); } //]]> </script> I mam takiego Div'a: Kod <div id="online" style="background: rgb(255, 255, 255) none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial; overflow: auto; height: 15px; width: 70px; font-style: normal; font-variant: normal; font-weight: normal; font-size: 15px;margin: 0px auto; align: center;">Ładowanie Licznika Online</div> No i tak się składa że nic się nie dzieje, tylko wyświetla Ładowanie Licznika Online. Pomocy!!! Dam + |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 2 Dołączył: 12.03.2008 Skąd: warszawa Ostrzeżenie: (0%) ![]() ![]() |
jak masz jakąś funkcję to wypadałoby ją gdzieś wywołać (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
no chyba, że coś przeoczyłem |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 22.03.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
1) Jakieś dziwne to tworzenie XMLHttpRequest u Ciebie
2) Nawet jak by było ok, to i tak innerHTML nadpisze zawartość i cały czas będziesz mieć 1 napis;), lepiej wykorzystaj DOM (dla testów alert (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Oto mój kod, i śmiga bardzo ładnie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) HTML: Kod <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl"> <head> <title>Ajakśik</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="ajax.js"></script> </head> <body> <div id="blok"> <p><a href="#" onclick="pingpong(); return false;">Klik!</a></p> </div> </body> </html> JS: Kod function getXhr(){ var xhr=false; if(window.XMLHttpRequest){ xhr=new XMLHttpRequest(); } else if (window.ActiveXObject){ try{ xhr=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try{ xhr=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { xhr=false; } } } return xhr; } function getData(){ var xhr=getXhr(); if(xhr){ xhr.open("GET","online.php",false); xhr.send(null); if(xhr.readyState==4 && xhr.status==200){ var aka=document.createElement("p"); // stwórz akapit var akatxt=document.createTextNode(xhr.responseText); // -/- węzeł txt aka.appendChild(akatxt); // dodaj do akapitu document.getElementById("blok").appendChild(aka); // dodaj aka do bloku } } } function pingpong(){ getData(); setTimeout("pingpong()", 1000); } no to pozdro (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował AjaxSrajax 22.07.2008, 22:09:24 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 25 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Pierwsza sprawa.
function synch(online) { document.getElementById("online").innerHTML = ajax_method.responseText; } function synch(online) { document.getElementById("online").innerHTML = online; } Druga, to tak jak już wujko_thc wspomniał - wywołaj gdzieś funkcję aktu(). Trzecia to prawidłowy operator tarnarny (czy jak to się tam zwie) i jest to jak najbardziej prawidłowe przypisywanie obiektu XHRa. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Wszystko chodzi tylko że wolno!!!. Mam ustawione na pobieranie rekordów z bazy do okienka co 3 sekundy i jeszcze ten licznik oline co tu pisałem, i te rekordy do okienka bardzo szybko pobiera ale ten licznik zanim pobieże dane to pół minuty trzeba czekać. Te dwie funkcje są w body onload.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 25 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jakie dwie funkcje?
Wystarczy ta: aktu() Jak chcesz żeby odpalało się szybciej, to zrób odwołanie do funkcji inline, zamiast w onload Kod <div id="online">Ładowanie Licznika Online</div> <script type="text/javascript">aktu();</script> ważne, aby odwołanie było pod elemencie o id "online", chyba, że zanim dostaniesz odpowiedź z serwera - ten element zdąży się doczytać, wtedy nie jest to konieczne (ale ryzykowne). |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 14.02.2008 Ostrzeżenie: (0%) ![]() ![]() |
Znacznie przyspieszyło. Czeka się teraz 3 sekundy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Oczywiście plusiki dla każdego (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) . Ale później wszytywanie rekordów do innego okienka nie chodzi jak trzeba (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) . Straszne opóźnienie jest.
Ten post edytował RifleMan 25.07.2008, 06:38:13 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 25 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
To może podaj całość - działającego - kodu. Wtedy sprawdzimy u siebię i może coś poradzimy, bo tak to już raczej ciężko coś stwierdzić.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 9 Dołączył: 22.03.2008 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Hej, sorry za offtop, ale zmotywowany ciekawością pozwolę sobie na małą niedygresję.
Kod var ajax_method = typeof XMLHttpRequest == "undefined"?new ActiveXObject('Microsoft.XMLHttp'):new XMLHttpRequest(); Cytat to prawidłowy operator tarnarny (czy jak to się tam zwie) i jest to jak najbardziej prawidłowe przypisywanie obiektu XHRa. Czyżby? Z tego co wiem operator warunkowy "?" pozwala na sprawdzenie tylko dwóch stanów. Czyli ten kod można rozumieć jako: jeżeli nie można stworzyć obiektu XMLHttpRequest to jest to IE, więc użyj Microsoft.XMLHttp. A co z jego nowszymi wersjami np. Msxml2.XMLHTTP albo msxml3? Moim zdaniem nie jest to jak najbardziej prawidłowe przypisanie XHR-a. Czy gdzieś się mylę? Liczę na odpowiedź i pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 207 Pomógł: 25 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
W sumie to nie wiem jak to jest z tymi wersjami ActiveX'a, pewnie najnowsza wystarczy i tylę, chyba, że skrypt ma działać pod IE starszym jak 6? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Ja osobiście w ogóle nie używam ActiveX'owej wersji XHRa. W dupie mam IE6 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 14:53 |