Autor | Zpráva | ||
---|---|---|---|
Boris Zátopka Profil * |
#1 · Zasláno: 19. 2. 2012, 17:03:00
Dobrý deň,
chcel by som sa spýtať, či by mi niekto neporadil s nasledovným problémom. Mám jednoduchý skript, ktorý mi zapíše do DB príspevok a následne sa načítaju príspevky do divu. Tanto div má scroller, neviem docieliť aby po načítaní divu bol scroller na spodnej časti divu. (kedže listujem príspevky od najstarších, novšie sú dole, chcem aby bola pozícia scrollera nastavená dole). Je problém vo výpočte výšky, ktorý zbehne ešte pred zápisom. Asi bute lepšie pozrieť skript. takto vypadajú skripty: v súbore mám jednoduchý formulár s textarea id="comment" a button class="button" nad formulárom div: <div id="responsecontainer" style="max-height:200px;width:200px;overflow-x:hidden;"> <?php include "response.php"; // select prispevkov z DB ?> </div> a samotný (zjednodušený) JS: $(function() { $(".button").click(function() { var comment = $("textarea#comment").val(); var dataString = 'comment='+ comment; $.ajax({ type: "POST", url: "process.php", // insert prispevku data: dataString, success: function(data) { loadDiv(); } }); return false; }); }); takto vypadá loadDiv() funkcia: function loadDiv(){ $("#responsecontainer").load("response.php"); $("#responsecontainer").scrollTop($("#responsecontainer")[0].scrollHeight); // posun scrollbaru na spodok divu } Problém je, ako som v úvode spomenul, ze $("#responsecontainer")[0].scrollHeight ako keby vyráta starú výšku (scrollbar sa posunie pekne, ale na predposledný príspevok). Dôkazom su aj alerty: alert( $("#responsecontainer")[0].scrollHeight ); na začiatku dokumentu a fo funkcii loadDiv() po $("#responsecontainer").load("response.php"); čiže: function loadDiv(){ $("#responsecontainer").load("response.php"); alert( $("#responsecontainer")[0].scrollHeight ); } ktore vyhodia rovnakú hodnotu :/ čo by nemali, keďže sa výška zmení. Snáď som problematiku opísal dostatočne. Budem rád za každý postreh. ďakujem |
||
Časová prodleva: 3 dny
|
|||
Chamurappi Profil |
#2 · Zasláno: 23. 2. 2012, 01:43:19
Reaguji na Borise Zátopku:
AJAX funguje asynchronně (to je to první áčko), což platí i pro funkci load — nemůžeš změřit správnou velikost dřív, než doteče obsah ze serveru.
Vůbec teda nechápu, proč po toho prvního POST požadavku posíláš další. Nevidím důvod vysílat při jedné akci uživatele víc různých dotazů na server… |
||
Časová prodleva: 12 let
|
0