ugrás a tartalomhoz

Ajax vissza-előre gomb

Nutec · 2009. Feb. 22. (V), 23.59
Sziasztok!

Van egy oldalam ,amelyen a lapok tartalmát szeretném Ajax-szal megoldani (már betelt a hócipőm az iframekkel), működik is, viszont az Istenért nem tudom működésre bírni a böngésző vissza-előre gombjait.
Már több helyen megnéztem(főleg angol oldalakon, mert magyarul csak elvétve találtam segédanyagot), próbálkoztam is jópár programkönyvtárral (dojo,RSH, mootools history manager stb.), de egyszerűen nem megy.
Biztos valami nagyon alap dolgot rontok el, de számomra nem egészen érthetőek a hozzájuk írt tutorialok(mit, hova kell beírni stb.).

A kérdésem az lenne, tudnátok-e segítséget írni bármelyikhez a fentiek közül?
vagy valami jó cikket ajánlani, amit esetleg kezdőként is végig tudnék követni. Még talán egy olyan oldal címe is sokat segítene, amelynek a forrásából érthetően ki tudnám szedegetni, hogy mi hova kell kerüljön és milyen formában.
Tudom először mászni kell megtanulni, s csak utána járni, de erre szeretnék minél hamarabb megoldást találni.

Előre is köszönöm!

Nu7ec

Ui.: Tanuláshoz milyen könyvet ajánlanátok?
 
1

...

jaczkog · 2009. Feb. 23. (H), 02.26
Itt találsz egy átfogó leírást és egy nagyon egyszerű framework-öt.
Ennek a megoldásnak a lényege, hogy az ajaxos kéréseknél a címsort kiegészítjük a megfelelő anchor hash-sel (#valami), az oldal betöltésekor pedig megnézzük, hogy van-e anchor hash és annak megfelelően töltjük be a tartalmat.

Mivel nem tudom hogyan próbálkoztál, nehéz ennél többet segíteni.


Ui.: Tanuláshoz tankönyvet tudok ajánlani.
2

ez nem (teljesen) a válasz

gex · 2009. Feb. 23. (H), 03.05
Ennek a megoldásnak a lényege, hogy az ajaxos kéréseknél a címsort kiegészítjük a megfelelő anchor hash-sel (#valami), az oldal betöltésekor pedig megnézzük, hogy van-e anchor hash és annak megfelelően töltjük be a tartalmat.
és ez hogyan kapcsolódik az előző/következő oldal gombokhoz?

a linken található oldalon szépen le van írva, a lényeg hogy valamilyen módon figyelni kell a hash változását, mivel az előző/következő gomboknál nem töltődik újra az oldal (feltételezve a teljesen ajaxos működést). itt a legnehezebb feladat, hogy - és innentől nem biztos a tudásom, mert nem foglalkoztam még behatóbban a témával - a böngészőknek nincs egy onclick-hez vagy onsubmit-hoz hasonló onhashchange eseménye (a kifejezésre gyorsan ráguglizva úgy látom ie8-nak már van, valamire mégiscsak jó a microsoft), azaz valahogyan meg kell valósítani, hogy lefusson egy függvény ha bekövetkezik, pl másodpercenként ellenőrzöd a hash értékét, de biztosan van ennél kifinomultabb megoldás is.
3

Könyv

firith · 2009. Feb. 23. (H), 10.28
Szia!

Sajnos a problémádhoz nem tudok megoldást, mert én nem használok AJAXot, legalább is nem erre, inkább csak formoknál.

de egy jó könyvet tudok ajánlani:
Webalkalmazások fejlesztése Ajax segítségével
5

reKönyv

Nutec · 2009. Feb. 23. (H), 10.49
Köszi a tippet, eddig 3 versenyző van:

Joshua Eichorn : Az Ajax alapjai

Kolman Nándor : Ajax a JavaScript ereje

Kris Hadlock : Webalkalmazások fejlesztése Ajax segítségével
4

már megvolt...

Nutec · 2009. Feb. 23. (H), 10.34
Köszi a linket, már kipróbáltam az RSH-t de valamiért nem működött. Nem teljesen tiszta, mit hogyan/hova kell beírni belőle. Lehet, hogy visszatérek rá, mert ezt néztem először és akkor még nagyon új volt számomra.
Tegnap este viszont sikerült a következő módszerrel megcsinálni egy példaoldalt:

contentwithstyle

viszont ez nekem kissé "túl összetettnek" tűnik. Biztos kell lennie valamilyen letisztultabb egyszerűbb megoldásnak. Jobban örülnék egy olyannak, amelyben nem kellene az összes lap tartalmát egyetlen php fájlban tárolni.

Ui2: Ajax tanulásához melyik tankönyvet ajánlanátok, mert anyám szakácskönyvében egy sort sem írnak a HttpRequestről:)!
6

szerveroldal vs kliensoldal

gex · 2009. Feb. 23. (H), 11.58
Jobban örülnék egy olyannak, amelyben nem kellene az összes lap tartalmát egyetlen php fájlban tárolni.
a szerveroldalt ne keverjük már a kliensoldallal. valószínűleg azért van minden egy fájlban mert a példa nem kívánt többet. magát a js-t használhatod egyszerű html oldalakhoz is, a php-nek ehhez semmi köze.
7

tudom, de...

Nutec · 2009. Feb. 23. (H), 12.40
tudom, hogy használhatnám html oldalakhoz is, de itt nem is a kiterjesztésen van a hangsúly, vagy hogy szerver v. kliens oldal (bocs, ha félreérthető volt), hanem, hogy ennél a megoldásnál egy fájlban vannak a tartalmak egy függvényen belül és egy switch-es szerkezettel váltogatja őket:
<?php

class PageHolder {

	function asHtml($i = 0) {

		switch($i) {

			case 0:

				return "<h2>Page 0</h2><p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam interdum. Proin fringilla. Ut lacinia tincidunt sem. Etiam mattis ante vitae sem. Sed arcu lacus, lobortis a, cursus vitae, dignissim non, nibh. Praesent commodo, sem in bibendum tincidunt, wisi diam gravida massa, in lacinia sapien urna et arcu. </p>";

				break;

			case 1:

				return "<h2>Page 1</h2><p>Curabitur nibh urna, luctus nec, malesuada ac, lacinia non, dolor. Proin iaculis est faucibus eros. Fusce libero sapien, consectetuer a, rhoncus et, accumsan in, ipsum. Nullam lacus. </p>";

				break;

			case 2:

				return "<h2>Page 2</h2><p>Nullam vitae odio ac erat consectetuer pellentesque. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nunc sollicitudin urna ac dolor. Aliquam pellentesque aliquet libero. Sed sollicitudin wisi vel ipsum. Quisque vulputate ornare orci. Suspendisse venenatis. </p>";

				break;

			case 3:

				return "<h2>Page 3</h2><p>Vivamus molestie, dolor sed consequat ullamcorper, odio wisi faucibus elit, non elementum dolor orci eu orci. Vestibulum et pede. Praesent ac leo in mauris vulputate ultricies. Nam nibh diam, egestas nec, vestibulum eu, fringilla in, neque. Suspendisse ut nulla nonummy wisi tincidunt viverra. Donec massa. Integer venenatis velit nec ligula. Sed varius.Morbi mi.</p>";

break;
}
}
}

?>
Megpróbálok megoldást keresni rá,de eddig annak is nagyon örültem, hogy egyáltalán működik, nem akartam belenyúlkálni a kódokba.

Esetleg van valami ötleted?
8

ez még mindig szerveroldal

gex · 2009. Feb. 23. (H), 12.50
leírod h probléma van az ajaxos history-val, belekevered a szerveroldalt, szólok h semmi köze a problémához, erre bemásolod a szerveroldal kódját is. nem értem mit szeretnél.
9

félreértés...

Nutec · 2009. Feb. 23. (H), 14.14
Azt hiszem félre értettél.

Írtam, hogy tegnap este sikerült megoldanom a vissza-előre gombokat:

Tegnap este viszont sikerült a következő módszerrel megcsinálni egy példaoldalt:

contentwithstyle

viszont ez nekem kissé "túl összetettnek" tűnik.

(sok a belinkelendő külső fájl, stb.)

A kérdésem amihez a szerver oldalt bemásoltam, már a megoldás kivitelezésére irányul.
Itt ugyanis a főoldal a lapok tartalmát egy class-al éri el ezen a külső php fájlon belül (nem az a lényeg, hogy php, hanem hogy minden oldal tartalma ebben az egy fájlban van). Azt szeretném kérdezni, hogy van-e valami olyan megoldás (akár ezzel, akár más módszerrel/prog. könyvtárral), ahol megtarthatnám a tartalmat külön html oldalakban és nem kellene őket egy fájlba belerakni(lehet, hogy a többi megoldás is így működik, de egyenlőre csak ezt az egy módszert "ismerem" ).

Előre is köszi!

Nu7ec

És bocsi,ha eddig nem voltam világos...
10

ő,ű

Nutec · 2009. Feb. 24. (K), 17.28
Sziasztok!

Kipróbáltam újra Az Really Simple History-s megoldást. Letöltöttem a példákat. Az advanced (aki használta tudja melyikről beszélek) megoldás állt a legközelebb, ahhoz az elképzelésemhez amivel tegnap Gex ősz hajszálait szaporítottam(még1x bocsi).

Sikerült is nagyjából működésre bírnom, beállítottam karakterkódolást, de nem hajlandó ff-ben értelmezni az ő és ű betűket(ie-ben egyik ékezetes betűt sem:().
A kérdésem csak annyi lenne, ha valaki már használta/ja a fent említett módszert ezt hogyan oldotta meg?

Én a topic1-es oldalba a következő sort tettem bele header-nek:

<?php header("Content-Type: text/HTML; charset= iso-8859-2");?>
De csak annyira jutottam amit fent már leírtam:(.
11

utf-8

gex · 2009. Feb. 24. (K), 17.33
használj utf-8-at. az XMLHttpRequest objektum csak ezt a kódolást támogatja ha jól tudom.
13

érdekes...

Nutec · 2009. Feb. 24. (K), 18.50
További próbálkozásaim után még mindig fél siker:

<?php 
$szoveg="Helló Világ! õûúóöáéí";
echo $szoveg=iconv("ISO-8859-2", "UTF-8", $szoveg);
?>
Ha beleteszem a $szoveg változóba a szöveget amit ki akarok íratni, akkor már kezeli az explorer is a karaktereket(mindegy, hogy utf-8 vagy iso),persze az ő és ű kivételével:(.

Az érdekesség azonban az, hogy ha nem dream weaverben írom be a szöveget (o és u betűkkel cseréli le a beírt karaktereket), hanem mondjuk sima jegyzettömbben, akkor az ff már kezeli az ő,ű-ket(a megjelenés tökéletes), az explorerben viszont az egész szétesik és nyoma sincs ajaxos működésnek(???). Ez mitől lehet..? (Ha megnyitom a jegyzettömbben írt fájlt dw-ben akkor látszik, hogy az ő ű helyén hasonló, a fenti pédában látható karakterek vannak.)

Rdd: köszi a linket, átnézem!
15

Ötlet...

Ustak · 2009. Feb. 24. (K), 20.38
a fájl kódolása is utf-8? Én vim-ben mindig beállítom, nem tudom dreamweawerben hogy lehet: set encoding=utf-8 set fileencoding=utf-8.
14

javítás

Nutec · 2009. Feb. 24. (K), 18.53
Bocsi: Rrd :)
16

egyenlőre csak újhoz...

Nutec · 2009. Feb. 24. (K), 22.31
Egyenlőre csak új dokumentumhoz tudtam beállítani dw-ben, de valószínű a notepad abban menti. Majd utána járok, hogy lehet, de már kifolyik a szemem reggel 9 óta:).
Amit viszont nem értek (és nagyobb gond), hogy az explorerben miért lép fel a hiba. Csak a kattinthatatlan ikonok meg néhány üres négyzet marad az egész helyén, szimpla fehér háttérrel.:(
17

Header

Poetro · 2009. Feb. 25. (Sze), 00.52
Az a kérdés hogy milyen header-rel megy ki az adat. Ildomos lenne:
header("Content-Type: text/html; charset=utf-8");
18

próbáltam..

Nutec · 2009. Feb. 25. (Sze), 10.22
Próbáltam mindkettővel utf-8-al és iso-val is, de őű sehogy sincs:(
19

több lépés is van

gex · 2009. Feb. 25. (Sze), 10.41
mindenekelőtt: http://weblabor.hu/cikkek/karakterkodolasiproblemakkikuszobolese

teendők:
- a fájl kódolása legyen utf-8 (bom nélkül) (ellenőrzés pl: notepad++-szal)
- a szerver adja ki az utf-8 fejlécet (ellenőrzés pl: ff jobb klikk -> oldal adatai)
- meta tag-ben utf-8 (ellenőrzés pl: ff jobb klikk -> oldal forrása)

az adatok adatbázisból jönnek vagy csak magába a fájlba vannak beleírva? ha adatbázisból, akkor ott is stimmelnie kell az adatok és a kapcsolat kódolásának is. erről is van mysql-es írás: http://weblabor.hu/cikkek/mysql50karakterkodolasok (adatbázismotoronként lehetnek eltérések, a dokumentáció segít).
20

SIKER!!!:D

Nutec · 2009. Feb. 25. (Sze), 11.05
Sikerült beállítanom! Rájöttem, mi volt a hiba:

Először iso-t adtam meg a charset-ben, ezzel nem igazán akart működni. Utána bele tettem a szöveget egy változóba az iconv-nek(ahogy egy fenti hozzászólásomban van). Ekkor már az ékezet működött, viszont nem volt jó explorerben. Aztán beállítottam utf-re a charcode-ot mindkét fájlomban, akkor jöttek azok az érdekes karakterek, amiket a fórumokban láttam.
Már kezdtem besokallni, hogy csak egyre rosszabb lesz, aztán kipróbáltam, hogy hátha vissza tudnám állítani legalább az eredeti állapotot, ha kivenném a szöveget a változóból, és tádáá, egyből tökéletesen működött utf-8-ban. Így végül is a saját lámaságom okozta a hibát, de most már legalább tudom legközelebb, hogy kell eljárni!

Köszönöm a segítséget mindenkinek! Bár lehet, hogy majd még sikítok, mert most jönnek még csak az oldalakon belüli linkek, stb. Aztán csak lesz végre AJAX-os weblapom!:D

Üdv.: Nu7ec
21

csak fájlból..

Nutec · 2009. Feb. 25. (Sze), 11.15
Csak simán a fájlba vannak beleírva, még semmi adatbázisos varázslatot nem akartam. Olvastam a cikkeket, tegnap egész nap ezzel szívtam (van abban valami igazság, hogy ha nagyon nem megy valami, akkor rá kell hagyni és másnap friss fejjel leülni elé), de hiába állítgattam a metát, a dw-t, amíg hibás volt az oldalon használt módszer (az iconv-s megoldást egy másik oldalon találtam, nem tudom nekik, hogy működött..).
Gex, Neked külön köszi a segítségért!