Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: loading bar po czasie
Forum PHP.pl > Forum > XML, AJAX
Papub
Witam serdecznie. Mam taką małą wizję ale nie wiem jak ją wykonać smile.gif Po naciśnięciu na przycisk przesyłam zmienną metodą POST poprzez bibliotekę Jquery. Chcę zrobić tak żeby po upływie 3 sekund i nie otrzymaniu jeszcze odpowiedzi pojawił się taki animowany gif ładowania. Mam funkcje

function loader() {
$("#img_back").css({ opacity: 0.5 });
$("#img_back").delay(3000).fadeIn(1);
$("#load").delay(3000).fadeIn(1);
}

function unloader() {
$("#img_back").hide(1);
$("#load").fadeOut(1);
}

#load to animowany gif, #img_back takie wielki tło.

Wszystko się rozchodzi o to jeżeli w trakcie działania tego delaya przyjdzie odpowiedź z posta to ma nie wykonywać funkcji loader a jeżeli jest już wykonywana bo np. upłynęło 5 sekund to ma wykonać funkcję unloader. Można prosić o jakieś propozycje rozwiązania tego problemu ?

Deamos
jQuerowy $.ajax ma coś takiego jak timeout, który po tym wywołuje hangle error. Jak robisz getPost

Zamiast $.post użyj $.ajax w którym możesz zastosować hangle beforeSend i success.
Jakoś tak, nie wiem czy dobrze Ciebie zrozumiałem smile.gif


Kod
$.ajax({
    beforeSend: function(){
        setTimeout('loader()', 3000);
    },
    success: function(dane){
        unloader();
    }
});
Papub
Przetestuje wieczorkiem ale patrząc na to myślę, że to bardzo dobre rozwiązanie i będzie ok. Lepiej przenieść się na to ajaxowe rozwiązanie a nie czyste $post. Dzięki bardzo za pomoc. Pozdrawiam

Prawie git ale nie wywołuje funkcji loader(). Cały skrypt działa poprawnie, robi co ma robić. Jego założeniem jest poruszanie się po strukturze katalogów. Po naciśnięciu 2 razy na katalog do pliku show_folders.php wysyłana jest wiadomość w jakim jesteśmy aktualnie katalogu i takie tam. Tylko chciałbym zrobić tak, że jak ktoś ma wolniejszy internet i odpowiedź skryptu wyświetlającego stukturę plików jeszcze nie przyjdzie to ma pokazać taki loading bar.


  1. var ile_razy_nacisnieto = 0;
  2. $("#back_line").hide();
  3. $(".folders li").live('dblclick', function () {
  4. var co_rozdzielic = $(this).children('div').text();
  5. var rozdziel = co_rozdzielic.split(".");
  6. if(rozdziel[1]) {
  7. return false;
  8. } else {
  9. if(ile_razy_nacisnieto == 0) {
  10. file_name +="/"+$(this).children('div').text();
  11.  
  12. var dataString = 'file_nam='+file_name+'&path=' + who;
  13. $.ajax({
  14. type: "POST",
  15. data: dataString,
  16. url: "show_folders.php",
  17. beforeSend: function(){
  18. setTimeout("loader()", 2000);
  19. },
  20. success: function(data){
  21. unloader();
  22. $("#back_line").show();
  23. $("#content_left_folders_in").html(data);
  24. ile_razy_nacisnieto = 0;
  25. ile_zaznaczonych = 0;
  26. }
  27. });
  28. $("#up_link").html('<a href="java script:jQuery(\'#uploadify\').uploadifySettings(\'folder\',\''+who+file_name+'\');$(\'#uploadify\').uploadifyUpload();"><img src="graph/add_ico.jpg" title="Zapisz" id="save_file_disc"/></a>');
  29. ile_razy_nacisnieto++;
  30. }
  31. }
  32. });
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.