Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Przerwanie działania skryptu
Forum PHP.pl > Forum > Przedszkole
mariuszg
Witam,

Mam kod który w pętli pobiera poprzez post dane:

  1. <!DOCTYPE html><html><head>
  2. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  3. <script>
  4.  
  5. $( document ).on( "click", "#start" , function(e) {
  6.  
  7. function petla (i, l, zwrot) {
  8.  
  9. $.post("script.php",{
  10. // wartosc: wartosc
  11. }, function (data) {
  12.  
  13. $("#wynik").append(data);
  14.  
  15. if (i < l) {
  16. petla(++i, l, zwrot);
  17. } else {
  18. zwrot();
  19. }
  20.  
  21. });
  22. }
  23.  
  24. petla(0, 5, function () {
  25.  
  26. $("#wynik").append(' koniec ');
  27.  
  28. });
  29.  
  30.  
  31.  
  32. });
  33. </script>
  34. </head>
  35. <body>
  36.  
  37. <button id="start">Start</button>
  38. <button id="stop">Stop</button>
  39.  
  40. <div id="wynik"></div>
  41.  
  42. </body></html>



Przypuśćmy że czasami odczyt z "script.php" trwa dłużej a ja nie chciałbym tyle czekać.
Jak przerwać działania skryptu po wciśnięciu przycisku stop ?
Nie daje rady tego zrobić. Proszę o pomoc.

Dziękuję
Pozdrawiam
guilty82
Ustaw timeout w $.ajaxSetup(), nastepnie sprawdzasz w $.post czy jest timeout, np.

  1. $.ajaxSetup({
  2. timeout: 3000
  3. });
  4.  
  5. $.post("script.php", {
  6. // wartosc: wartosc
  7. }).done(function() {
  8. //...
  9. }).fail(function(jqXHR, textStatus) {
  10. if(textStatus==="timeout") {
  11. // handle timeout
  12. }
  13. });


EDIT: Sorki, nie doczytalem. Jesli chcesz zresetowac ajaxa przyciskiem:
  1. var xhr = $.post("script.php", {
  2. // wartosc: wartosc
  3. }).done(function() {
  4. //...
  5. }).fail(function(jqXHR, textStatus) {
  6. if(textStatus==="timeout") {
  7. // handle timeout
  8. }
  9. });
  10.  
  11. $("#stop").click(function() {
  12. xhr.abort();
  13. });

Pamietaj, ze raz wywolay skrypt php bedzie nadal sie wykonywal smile.gif
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.