Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [AJAX] Wielokrotne połączenie z serwerem
Qwak
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 29.04.2009

Ostrzeżenie: (0%)
-----


Hej!

Jakiś czas temu napisałem skrypt który w zależności od ilości danych podanych przez użytkownika czasami wykonywał się ponad limit czasu skryptu (nie, to nie było jego zadanie biggrin.gif ). Jako że nawet gdybym sobie zwiększył limit wykonywania skryptu to i tak denerwujące by było czekanie aż skrypt się wygeneruje (problemu nie da się obejśc - curl). Dlatego postanowiłem zastosować JS do wstępnej obróbki danych i potem za pomocą ajax porcjami wysyłać dane do skryptu PHP. Wykorzystuje to obiekt xmlHttpRequest. Problem w tym że nie wiem za bardzo jak się zabrać do wielokrotnego połączenia ze skryptem :/ Mam taki kod:

Kod
for (i=0;i < iMax;i++) {
        var rXmlHttp = initXmlObject();
        rXmlHttp.onreadystatechange = function(){onchange();}
        rXmlHttp.open('POST','includes/server.php',true);
        rXmlHttp.setRequestHeader('content-type','application/x-www-form-urlencoded;charset=utf-8');
        rXmlHttp.send('sStuff='+sSendContent);
        delete(rXmlHttp);
    }


function initXmlObject () {
        var rXmlHttp;
        try {
            rXmlHttp = new XMLHttpRequest();
        }
        catch (e) {
            var aXmlHttp = new Array('MSXML2.XMLHTTP.5.0',
            'MSXML2.XMLHTTP.4.0',
            'MSXML2.XMLHTTP.3.0',
            'MSXML2.XMLHTTP',
            'Microsoft.XMLHTTP');
            var bSuccess = false;
            for (var i=0;i<aXmlHttp.lenght && !bSuccess;i++) {
                try {
                    rXmlHttp = new ActiveXObject(aXmlHttp[i]);
                    bSuccess = true;
                }
                catch (e) {}
            }
            if (!bSuccess) {
               throw new error ("blad!");
            }
        }
        return rXmlHttp;
}


Funkcja onchange jest dość spora i odwołuje się do jeszcze drugiej. W tym leży chyba problem bo z moich "badań" wynika że zmienna jest wywalana przed tym jak serwer zwróci wyniki i wszystko się rozwala. Próbowałem dodać jakąś pętle która by czekała aż funkcja onchange skończy działanie ale kończyło się to epic failem ;-) przeglądarka się zapętlała.

Aha i jeszcze mam takie pytanie: czy warto się pchać w rozwiązania zastępcze takie jak iframe i cookies? Zamierzam jeszcze zrobić wersje strony która będze pozbawiona java scriptu i myśle że to wystarczy. Co o tym myślcie?

Proszę o pomoc i pozdrawiam 
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Lepiej zainteresuj się pobieraniem danych przez cron i zapisywaniem wyników do cache.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Qwak
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 29.04.2009

Ostrzeżenie: (0%)
-----


Może nie wyraziłem się jasno. Użytkownik wpisuje dane do formularza, js je rozdziela na paczki i przesyla do skryptu php który za pomocą curl wykonuje na nich operacje.
Go to the top of the page
+Quote Post
flashdev
post
Post #4





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Cytat(erix @ 14.07.2009, 20:32:01 ) *
Lepiej zainteresuj się pobieraniem danych przez cron i zapisywaniem wyników do cache.


Podpisuję się pod tym stwierdzeniem i dodam jeszcze dlaczego tak powinieneś zrobić:

Ufasz w 100% w prawdziwość tych danych które dostajesz od użytkownika (client side)?
A jak ktoś Ci zrobi żart i zacznie przesyłać mase śmieci tym kanałem?


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 16:12