Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [AJAX] Ponowne wywołanie skryptu po otrzymaniu odpowiedzi z serwera
rozny
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


Witam,

wywołuję w <body onload> skrypt AJAX wysyłający zapytanie do pliku php. Po otrzymaniu odpowiedzi chcę ponownie wywołać ten skrypt. Oto kod:

  1. function wyslijDane() {
  2.  
  3. xmlhttp = typeof XMLHttpRequest == "undefined" ? new ActiveXObject('Microsoft.XMLHttp'):new XMLHttpRequest();
  4.  
  5. var distList = document.getElementById("dist_list").value;
  6. var selectTemplate = document.getElementById("select_template").value;
  7. var postSubject = document.getElementById("subject").value;
  8. var postContent = document.getElementById("tresc").value;
  9.  
  10. var url = "send_newsletter.php";
  11. var params = "dist_list=" + encodeURIComponent(distList) + "&";
  12. params += "select_template=" + encodeURIComponent(selectTemplate) + "&";
  13. params += "subject=" + encodeURIComponent(postSubject) + "&";
  14. params += "tresc=" + encodeURIComponent(postContent);
  15.  
  16. document.getElementById("head").innerHTML= "Wysyłanie newslettera...<br />";
  17.  
  18. xmlhttp.open("POST",url,true);
  19. xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  20. xmlhttp.send(params);
  21. xmlhttp.onreadystatechange=stateChanged;
  22.  
  23. }
  24.  
  25. function stateChanged() {
  26.  
  27. if (xmlhttp.readyState==4) {
  28.  
  29. document.getElementById("loading").style.display="none";
  30. document.getElementById("head").style.display="block";
  31. document.getElementById("head").innerHTML=xmlhttp.responseText;
  32. }
  33. }
  34.  
  35. function GetXmlHttpObject() {
  36.  
  37. if (window.XMLHttpRequest) {
  38.  
  39. return new XMLHttpRequest();
  40. }
  41.  
  42. return null;
  43.  
  44.  
  45. }


Niestety moje próby stanęły na niczym, a w googlach też nie znalazłem nic co mogłoby mi pomóc. Próbowalem w function stateChanged() wywoływać funkcję wyslijDane(); po otrzymaniu odpowiedzi z serwera, ale funkcja sie nie wykonywała. W funkcji wyslijDane() próbowałem robić rekurencję, ale też nic się nie działo po wykonaniu zapytania. Zależy mi na tym, by wyświetlać wynik każdego zakończenia pętli w pliku php, a z racji ograniczeń czasu wykonywania skryptu i ogólnie szybkości działania lepiej chyba kilkakrotnie wywołać skrypt niż mielic niewiadomo ile pętli przeładowując plik php z poziomu php... Bardzo bym prosił o pomoc, bo stoję w miejscu z robotą (IMG:style_emoticons/default/dry.gif)

Dobra, dałem radę. Do zamknięcia.
Go to the top of the page
+Quote Post
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Próbowałeś z jQuery?

  1. $.ajax({
  2. [...]
  3. success: function(data){
  4. // funkcja
  5. }


Myślę, że by zadziałało bez problemu.
Go to the top of the page
+Quote Post
rozny
post
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


nie próbowałem. nie chcę korzystać z jquery, bo w ten sposób się niczego nie nauczę.
Go to the top of the page
+Quote Post
thek
post
Post #4





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




@rozny: czyli ucząc się na prawo jazdy też korzystasz z gołego podwozia i podstawowych podzespołów, bo się "niczego nie nauczysz" jadąc normalnym samochodem? (IMG:style_emoticons/default/wink.gif) Używając jQuery i tak musisz znać choćby w podstawach JavaScript. Ale wiele żmudnych i powtarzających się rzeczy zostało tu opakowanych w gotowe funkcje. Nie ma sensu tego odrzucać w imię jakichś wzniosłych idei, które prędzej Cię zniechęcą do nauki niż zachęcą do jej pogłębiania. To nie lata 90. gdzie frameworki JS w zasadzie nie istniały.
Go to the top of the page
+Quote Post
rozny
post
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.01.2004
Skąd: Zielona Góra

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


thek - ja to doskonale rozumiem, ale w przypadku kiedy potrzebuje dosłownie raz użyć tego kodu w całym projekcie nie widzę sensu ładowania całej biblioteki z milionem funkcji, których w ogóle nie wykorzystam. doskonale zdaję sobie sprawę, że biblioteki i frameworki powstały po to żeby ułatwić programistom życie, ale to nie oznacza, że zawsze trzeba ich używać. Czasem lepiej napisać samemu to co już zostało napisane, bo będzie to mniejsze niż cała biblioteka i przy okazji nabędziemy kolejnego doświadczenia (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
markonix
post
Post #6





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


;)To wrzuć jQuery za pomocą Google jeżeli szkoda Ci transferu (IMG:style_emoticons/default/wink.gif)
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.12.2025 - 23:57