Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ XML, AJAX _ Problem z odświeżaniem

Napisany przez: gucio1 9.01.2018, 03:09:29

Witam,
mam następujący problem.

Mam listę zamówień wyświetlaną jako tabela. Każdy rekord tabeli można rozwinąć po naciśnięciu przycisku i np zmienić status zamówienia.

Statusy zmieniam ajaxem i jsonem. To wszystko super dziala statusy aktualizują sie w bazie itp.

Chcialem wprowadzić podział na kategorie bo nazbierało się duzo zamówień.
I wymyśliłem sortowanie również bez odświeżania po naciśnieciu odpowiedniego buttona z ramki sortowanie.

Wiec jeśli chcę zamówienia karegorii 1 klikam na przycisk kategoria 1 i wyświetlają mi wszsytkie rekordy kategorii 1.
Ok to wszystko działa. Tylko kiedy po wybraniu kategorii i ograniczeniu rekordów tabeli tylko do tych które mnie interesują chcę rozwnąć zamówienie i zmienić status to strona mi się przeładowuje bez zadnych zmian w bazie.

Jeśli stronę odświeże standardowo nie zmienię żadnej kategorii i próbuje rozwinąć 1 zamówienie i zmienić status wszsytko jest OK.

Czyli problem pojawia się kiedy najpiew wybiore kategorie tabela z rekordami sie przeładuje i wtedy chce zmienić status jakoegoś zamówienia.
Tak jakby po przeładowaniu tabeli czegoś brakowało.
Dodam jeszcze że przy ladowaniu strony standardowo używam tej samej klasy do wyświetlenia tabeli co przy zmianie kategorii więc nie ma mowy o nie załadowaniu czegoś z phpa jakiegoś elementu o klasie lub id.

Wydaję mi się że po wykonaniu skryptu sortowania kategorii skrypt zmiany statusu jest tak jakby go nie było.
Czego to może być przyczyna?

Napisany przez: viking 9.01.2018, 06:57:02

Zapewne standardowy problem czyli źle podpięte zdarzenia.

Napisany przez: gucio1 11.01.2018, 14:26:13

Rozwiązałem "głupio" ten problem,
choć nie jest to dobre rozwiązanie.

Wczytując ponownie tabele dodałem do kodu PHP skrypt JS żeby za każdym przeładowaniem tabeli skrypt wczytywał się od nowa.
To takie "chamskie" rozwiązanie ale o dziwo działa.
Wniosek jest chyba taki że po przeładowaniu tabeli tworzy się taka sytuacja jakby kodu JS nie wykrywało i muszę go co przeładowanie tabeli na nowo wczytywać, mimo że kod JS jest standardowo w nagłówku head który nie jest przecież odświeżany.

Napisany przez: viking 11.01.2018, 14:41:16

https://prophp.pl/article/28/propagacja_i_delegacja_zdarzen_w_javascript

Napisany przez: gucio1 11.01.2018, 15:13:53

Czyli chyba ja robię sposobem który w artykule jest opisany jako "fatalny" biggrin.gif

Jeśli mniej więcej zrozumiałem, chodzi o to żeby skrypt nie szukał po całej stronie wśród elementów o danej nazwie, tylko szukał konkretnego elementu o indywidualnej nazwie?

Zapoznam się wieczorem jak będę miał więcej czasu.

Dzięki.

Napisany przez: viking 11.01.2018, 15:19:15

Chodzi o to żebyś zdarzenia przypinał do rodzica (niezmiennego) który będzie nasłuchiwał niżej w drzemie DOM na zdarzenia.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)