Diskuze: ASP - Code Behind
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 37 zpráv z 37.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Mě stále nedochází, jak chceš mít timer na serveru. Stránka se na serveru sestaví, okamžitě se pošle prohlížeči a skript se zastaví. Ten timer se nikdy nespustí. Toto musíš dělat u klienta přes JS:
Pokud šňůrou myslíš Web Forms, tak to mají nějak nasimulované. IMHO je návrh Web Forms špatně, zbytečně se snaží za každou cenu nasimulovat určitý přístup, který se na web vůbec nehodí a hlavně ani není potřeba. Tohle by fungovat prostě nemělo, udělej to přes JavaScript.
Mám takový dojem, že to generuje JavaScript, jinak to nevidím. @metasax@ zkus si to napsat sám v JS. To bude myslím lepší.
Jenže to má háček - timer musí být na serveru a JS musí být u
klienta...
A kde jsi sebral, že Javascript musí být u klienta? Je spousta serverů, které Javascript používají.
Když dám ve script tagu runat, nic uvnitř nejde - vše zrudne...
Vím, že to jde - ale v mém příadě to nejde - ani by ty hodiny nešly...
Tak s tím musím nesouhlasit. Timer nemá na serveru co dělat (nevztahuj si to k ASP, ale spíš obecně). Když chceš něco dynamicky měnit bez obnovení stránky, musíš použít klienta.
var hodiny = $('#hodiny');
setInterval(function() {
var date = new Date();
hodiny.text( date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds() );
}, 1000);
Jaké hodiny? K čemu? Ty se snažíš dělat na serveru hodiny? Vždyť je nikdo nepotřebuje.
Server ti pouze vygeneruje stránku, to je jednorázová operace, jakmile dorazí ke klientovi do prohlížeče, tak již se serverem nemáš spojení. Timer bude v JavaScriptu a výpis času bude také v JavaScriptu. Oboje u klienta.
Tohle je přesně proč nemám rád Web Forms, protože blbnou vývojáře a
ten pak neví, jak HTTP protokol funguje Zapomeň chvilku na ASPčko a použij ten kód od Drahoše.
Ještě jsi nám nenapsal, co vlastně chceš dělat, k čemu ten timer či runat potřebuješ a jaký má být výsledek. Když ani nedokážeš specifikovat zadání, tak se těžko radí. Podle mne se snažíš vyrobit nesmysl.
Podívej se nahoru - ptal jsem se, proč mi nejde kód, který běžně používám...
Děkuji - mám ale problém - nemohu nějak dostat element z id labelu - zkusul jsem normálně jen getElementById(id labelu) - a pak:
getElementById('<%= LabelClock.ClientID %>')
Ani jedno nefunguje - jak na to? Děkuji.
Respektive nevím, kde je problém - prostě se mi neobjevuje žádný text...
Tak ještě jednou, zapomeň na ASPčko Udělej si prázdnou
HTML stránku a tam si to odlaď. Potom to teprve zakomponuj do
ASP.NET.
No to je vidět, že ASP nepoužíváš... Napsal jsem vše potřebné...
Možná nemáš ten prvek ještě načtený. V JavaScriptu se musí čekat na DOM, pokud s ním chceš manipulovat nebo ten javascript musíš umístit pod daný prvek (HTML dokument se i s JS zpracovává odshora dolů). Pokud to máš v externím souboru, použij window.onload = function() { /** Tvůj JS kód */ } Jinak doporučuji používat jQuery, VisualStudio ti ji tam i samo dodá.
Nenapadá tě, jak to otestovat? Takhle jsem úplně slepý - nemám tucha...
Řekl bych že tak, že to bude fungovat. Nerozumím otázce, stačí ten Drahošův kód vložit do HTML stránky, připojit jQuery a dát tam nějaký div s příslušným ID.
Máš pravdu, ASP nepoužívám. Jede jen na minoritní platformě a je obestřeno hromadou záhad.
Své otázky volím tak, abys sám přišel na řešení svého problému.
Mám jQuery, mám div s ID clock a kód hoře:
<script type="text/javascript">
setInterval(function () { var hodiny = $('#clock'); var date = new Date(); hodiny.text( date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds() ); }, 1000););
</script>
A nic se neděje...
Tak ho dej před
</body>
Nebo do události DOM ready.
Vyzkoušel jsem všechny polohy , a je to timer - mělo by být jedno, zda je stránka načetlá -
časem se načte a pak by se měl začít měnit text...
Chtělo by se to kouknou do konzole. Máš tam středník a závorku navíc.
Kdybys ty kódy formátoval, viděl bys to Tady je snad funkční kód
<script type="text/javascript">
setInterval(function() {
var hodiny = $('#clock');
var date = new Date();
hodiny.text( date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds() );
}, 1000);
</script>
Nejsem si jistý, jestli je to jedno, protože se ti nevrátí ten element a ty s ním pracuješ, hodí to chybu a ten timer se nemusí zavést. Často jedna chyba zabije zavedení celého skriptu.
V tomhle případě to ani nevypíše error. jQuery si totiž spojené prvky ukládá do pole. To by v případě, že element ještě není načten, bylo prázdné, takže by se jQuery ani nepokusilo někde měnit text. Pokud by použil klasický DOM, ukončilo by to jednu anonymní funkci TypeErrorem. Interval už by ale byl zaregistrovaný, takže by se prováděl dál.
Zobrazeno 37 zpráv z 37.