![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 437 Pomógł: 42 Dołączył: 16.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Mam zamiar zrobić Chat na JavaScript (jQuery, Ajax itp). Wstępnie wychodzę z założenia, że nie chce pobierać kodu HTML rozmów, tylko generować je za pomocą skryptu JS z danych JSON. Za pomocą jQuery oscylować. Wszystko działa, ale też nie w 100% tak jak powinno. Zacznę opisywać: Chat będzie podzielony na kilka pokoi, jedne będą bardziej popularne, inne mniej, ale to żadna przeszkoda. Tak samo ilość postów jaka będzie wyświetlana to będzie wartość dynamiczna, bo w jednym pokoju może być ich pięć, a w innym dwadzieścia. Nie zależnie od ilości pobieranych postów, trzeba w skrypcie wyróżnić w jaki sposób wyświetlać dane. Jak wiecie w jQuery odróżniamy ciekawe dwie funkcje – appendTo() i prependTo() – pozwalają nam dawać dane na końcu/początku wybranego elementu (w moim przypadku div-a). Trzeba jeszcze wspomnieć, że div w którym będą znajdować się posty – ma on identyfikator shoutboxPosts, a identyfikatory disów w których znajdzie się treść postu to post_[id]. Z góry zakładam, że identyfikatory postów nie mogą się powtarzać. Przy wyświetlaniu danych zakładam dwie sytuację: 1. wyświetlone zostały już jakieś posty 2. nie wyświetlono ani jednego postu Wiedząc, że posty znajdują się w tablicy data.posts (która zawiera inne tablice zawierające takie dane: id postu, login, treść, data dodania i awatar), odpalam pętlę: for (var index in data.posts) W tej pętli na początku do zmiennej $id zapisuję identyfikator obecnego diva, który zostanie utworzony oraz w zmiennej $how zapisuję ilość postów już wyświetlonych:
Następnym etapem jest utworzenie 2 warunków, żeby wiedzieć czy aktualizować wpisy czy dodawać:
Wszystko działa jak należy – jeżeli skrypt jest załadowany od nowa to wszystko fajnie się wyświetla, jeżeli dodam nowy post. Problem jest jak dodam w posty naraz (albo dwóch użytkowników doda w tym samym momencie lub zostaną pobrane nowe dwa wpisy). Pokazują się, a dwa ostatnie zostaną usunięte (żeby postów nie było więcej niż data.limit), jednak te wpisy już nie sortuje po dacie tylko dodaje nowe wpisy na początku głównego diva po koleji, a każdy następny nowy powinien być nad poprzednio popranym nowym. Mam nadzieje, że rozumiecie mój problem… To pokazania mojego problemu załączam screen. ![]() Trzeba będzie pracować na ifie nr dwa czyli if($how >= data.limit) Bardzo proszę o pomoc |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 10:52 |