Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Jquery powiela połączenia
neo1986kk
post
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


Witam , mam taki mały problem, że połączenia ajax są powielane, otóż mam taki kod:
  1.  
  2. $(document).ready(function(){
  3.  
  4.  
  5.  
  6.  
  7. (function($){
  8. $.fn.inicialize = function(){
  9. $('.window').remove(),
  10. $.ajax({
  11. type: "GET",
  12. url: "ajax/chatInit.php",
  13. type: "POST",
  14. dataType: "xml",
  15. success: function(xml) {
  16. $(xml).find('site').each(function(){
  17. alert('1'),
  18. setTimeout(function(){$(this).inicialize();},10000)
  19.  
  20.  
  21. });
  22.  
  23. }}); }})(jQuery);
  24.  
  25. $(this).inicialize();
  26.  
  27.  
  28. });
  29.  
  30.  
  31.  

i niestety działanie jest takie
ze z pierwszy razem alert wyskakuje raz, za 10 sek 2 rzy, za kolejne 10 sek 4 razy, za kolejne 8 itd... czy jest jakaś możliwość żeby to resetować ?

Ten post edytował neo1986kk 10.07.2011, 20:47:44
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
muk4
post
Post #2





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


Ale bałagan tongue.gif Spróbuj dać
[JAVASCRIPT] pobierz, plaintext
  1. setTimeout(function(){$(this).inicialize();},10000)
  2. // zamiast:
  3. $(this).inicialize();
[JAVASCRIPT] pobierz, plaintext


Powinieneś trzymać porządek w kodzie.
[JAVASCRIPT] pobierz, plaintext
  1. $(document).ready(function(){
  2. (function($){
  3. $.fn.inicialize = function(){
  4. $('.window').remove(),
  5. $.ajax({
  6. type: "GET",
  7. url: "ajax/chatInit.php",
  8. type: "POST",
  9. dataType: "xml",
  10. success: function(xml) {
  11. $(xml).find('site').each(function(){
  12. alert('1'),
  13. });
  14. }
  15. });
  16. }
  17. })
  18. (jQuery);
  19. setTimeout(function(){$(this).inicialize();},10000)
  20. });
[JAVASCRIPT] pobierz, plaintext
Go to the top of the page
+Quote Post
neo1986kk
post
Post #3





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


tak tylko że on ma mi ten kod co 10 sekund powtarzać i setTimeout musi być w funkcji kiedy następuje success
Go to the top of the page
+Quote Post
muk4
post
Post #4





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


Nie za bardzo rozumiem JQuery ale czy
setTimeout(function(){$(this).inicialize();},10000)

nie wykonuje funkcji $(this).inicialize() co 10 sekund? Nie o to chodzi?

@DOWN
A no tak tongue.gif. Cały czas myślałem o setInterval a pisałem co innego ^^. Ach te upały...

Ten post edytował muk4 10.07.2011, 21:41:21
Go to the top of the page
+Quote Post
neo1986kk
post
Post #5





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


nie, wykonuje ją z 10 sekundowym opóźnieniem, ale raz.

dałem tam zamiast setTimeout setInterval i juz jest okej tylko mam jeszcze jeden problem

  1. $(document).ready(function(){\
  2. time=10000; // tutaj zmiana
  3. (function($){
  4. $.fn.inicialize = function(){
  5. $('.window').remove(),
  6. $.ajax({
  7. type: "GET",
  8. url: "ajax/chatInit.php",
  9. type: "POST",
  10. dataType: "xml",
  11. success: function(xml) {
  12. $(xml).find('site').each(function(){
  13. alert('1'),
  14. time=10; // tutaj zmiana
  15. });
  16. }
  17. });
  18. }
  19. })
  20. (jQuery);
  21. setInterval(function(){$(this).inicialize();},time) // tutaj zmiana
  22. });


i teraz tak: chcialbym zeby zmienna time zmienila sie globalnie czyli zeby pozniej bylo time= 10, ale niestety zmienna pozostaje caly czas 10000

Ten post edytował neo1986kk 10.07.2011, 21:22:08
Go to the top of the page
+Quote Post
muk4
post
Post #6





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


Może zamiast setInterval użyj setTimeout. Daj go na końcu funkcji i wywołaj funkcję normalnie. Wtedy funkcja będzie wykonywać siebie a ty możesz kontrolować opóźnienie.

BTW. initialize od init, nie inicialize.

Ten post edytował muk4 10.07.2011, 21:53:41
Go to the top of the page
+Quote Post
neo1986kk
post
Post #7





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

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


opóznienie moge kontrolować ale ilości wywołan już nie więc cofamy się do początku tematu czyli powielanie połączeń, setintrval czy tam settimeout nie moze być w środku funkcji, a na zewnatrz nie pobiera parametru time więc tak źle i tak nie dobrze.

Ponawiam pytanie, dlatego że problem nie został jeszcze rozwiązany: Jak resetować ilość połączeń wysyłanych do serwera za pomocą jquery?
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: 20.08.2025 - 08:25