Autor | Zpráva | ||
---|---|---|---|
Vladimír Zeman Profil |
#1 · Zasláno: 15. 1. 2008, 20:48:16
Udělal jsem si pomocí AJAX vybírání článku. Problém je, že při načítání stránky pomopcí AJAXu se načítá cca 20 malých (20*5kb) obrázků a stránka tedy chvíli pracuje a až potom stránku zobrazí. Rád bych tam tedy na tu chvíli vložil malou ikonku () a až by se stránka načetla, tak by ikonka zmizla. Google mi našel nějaká řešení, vše ale bylo napsáno pro ASP. Neví někdo jak na to?
<select name="vyber" id="vyber" onchange="vyberHry();"> <option value="http://www.web.cz/cache/nejlepsi7.php">7 dnů</option> <option value="http://www.web.cz/cache/nejlepsi14.php">14 dnů</option> </select> <div id="mistoZobrazeni"></div> |
||
Taps Profil |
#2 · Zasláno: 15. 1. 2008, 21:14:19
Vladimír Zeman
Tak nějaká taková vychytávka by se mi taky hodila |
||
Leo Profil |
#3 · Zasláno: 15. 1. 2008, 21:30:54
Proste pri odeslani pozadavku ikonku zobrazte, a az prijde 200 OK tak ji zruste, Leo
|
||
ah01 Profil |
#4 · Zasláno: 15. 1. 2008, 21:45:17
Leo
Pokud jsem to pochopil správě, tak to neřeší problém. Vladimír Zeman Viděl bych to na tento postup. 1) Poslat požadavek, zobrazit ikonu. 2) přijde 200 OK - vložím html kód do stránky a projdu přes DOM všechny obrázky, v daném článku a na všechny navěsím onload. Zároveň si spočítám jejich počet, v každém onload jej dekrementuji a ve chvíli, kdy jsem na 0, schovám ikonu. Plus nějaký bezpečností timeout, aby tam ta ikona furt nestrašila, pokud se něco nepovede stáhnout. Není to moc elegantní, ale mělo by to fungovat. Pokud na to použiješ např. jQuery, tak by to mohlo být dost rychle naspaný. |
||
Vladimír Zeman Profil |
#5 · Zasláno: 15. 1. 2008, 21:56:18
ah01
Asi jsem zapomněl zmínit, že v AJAXu nejsem moc pokročilí a tudíž jsou věci (v teoretocké rovině) pro mě ne příliš srozumitelné. A nešlo by to i nějak jednoduššeji? Obrázky se zobrazují v jednom divu (nebo mohou v čemkoli jiném), tak jestli by nešlo pracovat jen s tím divem a ne s každým obrázkem zvlášť. |
||
habendorf Profil |
#6 · Zasláno: 15. 1. 2008, 22:01:49
Krapet mimo téma - myslím že tohle zrovna není ideální použití AJAXu.
|
||
ah01 Profil |
#7 · Zasláno: 15. 1. 2008, 22:18:58
Vladimír Zeman
Teď jsem koukal, že v jQuery je událost load, která cituji „For elements, it fires when the target element and all of its content has finished loading.“. Což by se tobě mohlo hodit. Pokud už budeš koukat na jQuery, mrkni se na podporu AJAXu, kterou nabízí, určitě ti to dost ulehčí prácí. habendorf Taky bych řekl, ale i to se dá dělat. Např. jQuery umožňuje přímo nahrát obsah (do elementu s id links nahraje tagy li z elementu s id abc ze stránky Main_Page) $("#links").load("page.html #abc li"); |
||
habendorf Profil |
#8 · Zasláno: 15. 1. 2008, 22:30:26
ah01
Jasně že se dá. Ale nějak mi v tomto případě uniká smysl. Připadá mi tak trochu jako simulace frames. |
||
Taps Profil |
#9 · Zasláno: 16. 1. 2008, 07:31:06
MOžná by nebylo špatné kdyby sem někdo kdo má zkušenosti napsal kod, který by se hodil i méně zkušeným uživatelům
|
||
Leo Profil |
#10 · Zasláno: 16. 1. 2008, 10:26:14
"MOžná by nebylo špatné kdyby sem někdo kdo má zkušenosti napsal kod, který by se hodil i méně zkušeným uživatelům"
Kod ceho? Leo |
||
Taps Profil |
#11 · Zasláno: 16. 1. 2008, 17:05:57
Leo
Nějakého funkčního skriptu |
||
Leo Profil |
#12 · Zasláno: 16. 1. 2008, 17:22:38
"Nějakého funkčního skriptu"
Ktery ma delat co? Leo |
||
HGD Profil |
#13 · Zasláno: 16. 1. 2008, 19:14:42
2 Leo co si takle pročíst celej topic? možná že bys i pochopil o čem je tu řeč...
|
||
ah01 Profil |
#14 · Zasláno: 16. 1. 2008, 22:38:39
Takže příklad, jo? Tak třeba:
$(function(){ function load(url){ $("#ikona").show(); $("#mistoZobrazeni").load(url, null, function(){ var imgs = $(this).find("img"); var count = imgs.size(); if(count <= 0){ $("#ikona").hide(); } else { imgs.map(function(){ $(this).load(function(){ if(--count <= 0) $("#ikona").hide(); }); }); } }); } $("#ikona").hide(); $("#vyber").change(function(){ load(this.value); }); }); Abyste neřekli, že je to změť nějakého kódu, tak v reálu to je nějak takhle http://jslab.net/pub/jpw/ajax-load/ . Navíc je tam doplněn timout a trochu komentářů. |
||
Taps Profil |
#15 · Zasláno: 17. 1. 2008, 07:29:39
ah01
super...díky..a bude to fungovat i když odesílám data na jinou stránku pomocí metody post ? |
||
Časová prodleva: 12 měsíců
|
|||
Stepan Profil * |
#16 · Zasláno: 27. 12. 2008, 14:25:08
No tenhle kodmi prijde trochu silenej.. programuju sice s jquery asi tri dny ale udelal jsem to takhle:
$(document).ready(function() { $("a.load_photos").click(function() { $(".loading").show(); $("#uploaded").load("index.php?name=gallery..." .images, function(){$(".loading").hide();}); }); }); Vysvetleni: po kliknuti na odkaz se tridou "load_photos" se zobrazi div se tridou "loading" pak se do id "uploaded" nahraje stranka "index.php..." ale jen to co je na te strance ve tride "images", az se to vykona tak pres funkci callback //load( url, params, callback )// schovam div "loading". |
||
Časová prodleva: 15 let
|
0