Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Filtr logów
Forum PHP.pl > Forum > XML, AJAX > AJAX
korniks
Witam,

zrobiłem sobie właśnie filtr do logów. Za każdym razem jak użytkownik wpisze w pole input jakiś znak, ten przeszuka baze i wydrukuje mu przefiltrowane dane. Zapytania do bazy idą asynchronicznie, korzystam tutaj z JQuery. Problem polega na tym, że skrypt reaguje na event keyup, co powoduje że w krótkim czasie może być wysłana spora ilość żądań przez co czasami się zdarza że po wysłaniu dwóch żądań to pierwsze wykona się po 2, rezultatem tego są nieaktualne dane wydrukowane na ekranie. Jak sobie z tym poradzić?

Mój kod

[JAVASCRIPT] pobierz, plaintext
  1. var input = $("#logExt-form :input");
  2.  
  3. input.keyup(function(e){
  4.  
  5. var data = {};
  6.  
  7. input.each(function(){ // pól input jest 6
  8. data[this.name] = $(this).val();
  9. });
  10.  
  11. dataJSON = JSON.stringify(data);
  12. console.log(data);
  13. $.ajax({
  14. url : "/admin/modules/CmsModulesAdminLogsExtensionBundle",
  15. cache : false,
  16. data : { "data" : dataJSON},
  17. success : function(data){
  18. $("#ajax-content").html(data);
  19. }
  20. });
  21.  
  22. });
[JAVASCRIPT] pobierz, plaintext


rocktech.pl
Witam.

Metoda change będzie bardziej odpowiednia.

[JAVASCRIPT] pobierz, plaintext
  1. ...
  2. input.change(function(e){
  3. ....
[JAVASCRIPT] pobierz, plaintext


Zawsze możesz zbindować klika zdarzeń np.

[JAVASCRIPT] pobierz, plaintext
  1. input.bind("keyup change", function(e) {
[JAVASCRIPT] pobierz, plaintext
korniks
Wielkie dzięki, rzeczywiście zmiana eventu na change załatwiła sprawe.
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.