Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Przerwanie działania skryptu
mariuszg
post
Post #1





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 22.06.2006

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
guilty82
post
Post #2





Grupa: Zarejestrowani
Postów: 176
Pomógł: 31
Dołączył: 26.03.2007

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


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 (IMG:style_emoticons/default/smile.gif)

Ten post edytował guilty82 3.03.2017, 18:08:52
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.08.2025 - 18:16