ugrás a tartalomhoz

Visszalépés AJAX-os oldalra - hogyan célszerű?

tisch.david · 2009. Szep. 5. (Szo), 00.23
Sziasztok!

Egy webáruházban pl. a kereső oldal AJAX-szal töltődik be. Egy talált termékre kattintva a termék oldalára jutunk, majd innen kéne visszanavigálni oda, ahonnan érkeztünk. Van erre valamilyen megoldás azon kívül, hogy a termékoldal megkap minden paramétert ahhoz, hogy visszalépési igény esetén az előző oldalt újra lehessen generálni?

A válaszokat előre is köszönöm!

Üdv:
Dávid
 
1

Nem igazán értem

inf · 2009. Szep. 5. (Szo), 05.46
Hát én nem igazán értem, ebben mi az ajax? :-P
Ha már xmlhttpvel csinálod az oldalt, akkor a termékre kattintásnál miért nem használod ugyanezt a technológiát?
A history ajaxos kezeléséhez vannak nagyon jó megoldások, szóval pusztán a visszaléptetés miatt nincs értelme külön betölteni. Nekem jobban tetszenek a clearboxhoz hasonló megoldások.
2

Köszi a tippet!

tisch.david · 2009. Szep. 5. (Szo), 13.02
jQuery-t használok, látom ahhoz is van számos history plug-in; megnézem őket.

Üdv:
Dávid
3

Ne használj ilyennél AJAX-ot vagy ne így

fchris82 · 2009. Szep. 5. (Szo), 14.01
Ilyen esetben semmi értelme az AJAX-nak, sőt, kifejezetten ellenjavalt. A formot egyszerűen küld el GET-tel. Egy csomó problémát okozol magadnak és a felhasználónak az AJAX-szal:
- A keresés eredménye nem tehető be a könyvjelzők közé és nem is küldhető el e-mailben, sok találat esetén nem megoldható a lapozás.
- A vissza gomb nem működik
- Ha ezeket a problémákat szeretnéd kiküszöbölni - mert lehet -, akkor azokat neked kell megoldani, nem kevés munkával és odafigyeléssel és valószínűleg többet veszítesz a réven, mint amennyit nyersz a vámon, vagy fordítva.

Persze ezektől függetlenül el tudok képzelni olyan eseteket, amikor a fentiek ellenére is jobb az AJAX, de az eddig elmondottak alapján rossz eszközzel próbálkozol, aminek máshol van meg a létjogosultsága. Ez kicsit olyan, mint amikor régebben egyesek Flash-ben akartak fórumot csinálni, inkább kevesebb, mint több sikerrel.
4

miért ne?

gex · 2009. Szep. 5. (Szo), 15.51
elég alap problémák így 2009 vége felé egy ajaxos oldal könyvjelzőzése, lapozása és vissza gombja...
5

...

fchris82 · 2009. Szep. 6. (V), 01.01
Mert elhiszem, hogy tök menő átkelni a folyón úszva, a legújabb cáparuhában, de minek, ha van híd?

Egyszerűen semmi értelme. AJAX-ot ott érdemes használni, amikor az oldalon kevés információ változik, ezért tényleg erőforrás pazarló és a felhasználói élményt jelentősen rontó megoldás lenne az oldalt minden apró változás után újratölteni.
De itt most egy keresésről van szó, ergo szinte az egész oldal változik. Bőven megfelel egy form, amit GET-ként továbbküldenek.

Nem mondtam, hogy nem oldhatóak meg az így létrejövő problémák, csak tök felesleges velük foglalkozni. Plusz munka egy olyan dologért, amit meg se kellene egyébként csinálni. Elég lenne egy szerver oldali szkript, ami visszaad egy oldalt, ehelyett:
- szerver oldali szkript továbbra is kell
- meg kell írni JS-ben a formkezelést és válasz lekezelését (<10-nx100 sor - mit mennyire kezelsz le és oldasz meg, felhasználói visszajelzés a töltésre, stb, stb --> ezek mind benne vannak a böngészőben és alapból megszokták a felhasználók, megint vmi, ami tök feleslegesen nekem kell leprogramoznom)
- meg kell oldani az URL kezelést (több stratégia létezik)
- meg kell oldani a vissza gomb kezelést (az előbbivel már ez is megoldódik)

Még csak azt se mondanám, hogy verébre ágyúval tipikus esete, mert itt az AJAX semmi pluszt nem nyújt szinte, ami indokolná a használatát. Persze előfordulhat az a keresés, amikor kell az AJAX!

Na, túlkomplikálom. A lényeg, hogy az AJAX-nak is megvan a maga helye és szerepe, a maga előnyeivel és hátrányaival. Ez egy PLUSZ dolog, nem pedig vminek a továbbgondolása!
Egyesek átestek a ló túlsó felére, és már ott is AJAX-ot használnak, ahol semmi értelme. Ez majd idővel lecseng és minden visszakerül a rendes kerékvágásba. Anno a Flashnél volt ilyen "láz", amikor az újdonság rózsaszín ködétől nem fogták fel egyesek, hogy fórumot csinálni ott a HTML. Lehet flashben is, csak akkor neked kell megint megírni egy csomó mindent, amit nem kellene és/vagy egyáltalán nem is lehet(ett):
- szöveg görgetés? (egér görgővel, nyilakkal és PageUp-PageDown gombokkal is!)
- keresés? (CTRL+F?)
- vissza gomb?
- egy adott topik vagy hozzászólás linkelése - könyvjelző és e-mailben elküldés?
- betűméret állítás?
- nyomtatás?
Rengeteg plusz munka, sok esetben siralmas végeredmény.

"Aki nagyon ért a kalapácshoz, mindenhol szöget lát." ;)
7

Nem értek egyet

inf · 2009. Szep. 6. (V), 02.31
Szerintem túl konzervatív ezzel kapcsolatban a felfogásod.
A munka jelentős részét már elvégezték az adott keretrendszer (jelent esetben JQuery) fejlesztői. Nem hiszem, hogy annyira bonyolult lenne egy már amúgy is ajaxos oldalhoz még egy history kezelést is hozzáadni. Max fél-egy óra.
(Foglalkoztam pár napot a témával, írtam saját cross-browser history kezelőt. A falat lekapartam volna legszívesebben, annyi az eltérés az egyes böngészők között. Én nem fognám mindezt ie-re, ff-nek is ugyanúgy voltak teljesen logikátlan dolgai.)
8

Second Company

fchris82 · 2009. Szep. 6. (V), 12.24
Mi csak úgy szoktuk "magunkat" hívni, hogy Second Company. Az ügyfeleink nagy része azután bíz meg minket, miután már korábban kiadták a megbízásukat egy másik cégnek (olcsón), de azokban aztán csalódtak. Rendszerint azért, mert nem tartották a határidőket és a végeredmény is elég bugos volt.
Ez nem attól van, hogy mi keresünk ilyen ügyfeleket, hanem ez úgy néz ki, mi is leadunk árajánlatokat és terveket, meg az ilyen zseni "cégek" is. Mi megmondjuk, hogy a fejlesztési idő 6 hónap és x millió, mire a másik fejlesztő meg azt mondja, hogy 1 hónap és 120 ezer. Nyilván nem minket fog megbízni ezek után, mert nem ért hozzá.

Ebből kifolyólag rengeteg szar megoldást veszünk át, nagyon ritka és nagyon kevés az, amikor vmit is megtartunk a korábbi fejlesztésekből, mert többségében elvi hibásak.

Nem konzervatív vagyok, csak egyszerűen a csavart felesleges beverni a falba! Persze, lehet. Meg vannak már olyan csavarok, amiket könnyebb beverni, de ettől az még csavar. Mi nagy projekteken dolgozunk, komplex rendszereken. Egyáltalán nem mindegy, hogy egy 1 órás feladatot 1 óra alatt oldunk meg, vagy másfél. Rengeteg apró dologgal el lehet szállni a fejlesztés során és szelektálni, rangsorolni kell. Nem csak azt kell mérlegelni, hogy egy ötlet jobbá teszi-e a végeredményt, hanem hogy az:
- mekkora plusz munkát és ezáltal többletköltséget jelent?
- feltétlenül most kell megvalósítani, vagy ráér később?
- hogyan tudjuk mérni, hogy az ötlet számszerűen mennyivel jobb végeredményt produkál?
- mennyire bonyolítja a rendszert, mint egészet, és ezáltal teszi rugalmatlanabbá az egész rendszert?
- plusz-mínusz lista

Ezek megválaszolására van 5-10 perc. Nem több, mert fontosabb, hogy legyen egy működő végeredmény, mint hogy majd sokkal később legyen egy tökéletes. "Jobb ma egy veréb, mint holnap egy túzok." A rendszer működése folyamán az még úgy is változtatható és az ötletek később megvalósíthatók.

Rengeteg helyen használunk AJAX-ot. De csak azért, mert abban is megoldható, még nem fogjuk használni. És másnak sem kellene. Ezt inkább hívnám profizmusnak, mint konzervativizmusnak. Mint ahogy lehet saját PHP-s keretrendszereket fejleszteni, vagy template kezelőket, de minek?
- a végeredmény általában messze nem jobb, mint egy kész rendszerben
- nehezebb átadni a munkát vagy felvenni a csapatba új embert
- egyszerre kell két dologgal foglalkozni és nem elég csak a végeredményre koncentrálni, annak alapjait is fejleszteni kell

Ismétlem: az AJAX szép és jó. Vannak előnyei ÉS HÁTRÁNYAI. Az utóbbit hajlamosak egyesek figyelmen kívül hagyni és vmi szent Grálként tekintenek a technológiára. De ha neked időd, mint a tenger, úgy fejlesztesz, ahogy jól esik...

Egyébként pont én szoktam mondogatni, hogy "A fejlődés legfőbb gátja, a csökönyös ragaszkodás a jól bevált dolgokhoz." De itt most nem ez a helyzet, hanem mérlegre téve a dolgokat, jelen esetben a hagyományos célszerűbbnek látszik.
15

Végülis..

inf · 2009. Szep. 7. (H), 14.17
Persze, meg lehet csinálni hagyományos módon is. AJAX ilyen esetekben, amikor semmi extrát nem nyújt, inkább csak plusz munka. Én mondjuk úgy vagyok vele, hogy először megcsinálom a hagyományos módszerrel az oldalt, aztán ha már úgy működik, és van rá időm, meg van értelme, akkor megtoldom diszrkét javascriptes AJAXal.
Vannak dolgok, amiket nem lehet megoldani javascript nélkül, ez az eset speciel nem az. :-)
9

... ...

gex · 2009. Szep. 6. (V), 16.16
De itt most egy keresésről van szó, ergo szinte az egész oldal változik. Bőven megfelel egy form, amit GET-ként továbbküldenek.
egész oldal? mondjuk egy ehhez hasonló oldalt keresési eredményeknek alapul véve a keret (fejléc/oldalsáv/lábléc) ~15kb, a tartalom pedig szintén ~15kb. a tartalom szöveg/html aránya elég kicsi szóval ezt json-ben küldve 1-2kb-ra lehetne redukálni. ezzel 90-95%-ot spóroltunk.

persze nem azt mondom hogy kell az ajax, mert nem ismerem a körülményeket. de mivel te sem ismered nem hiszem hogy ez egy helyes és jó reakció volt a kérdésre. lehet hogy ő is second company, megkapott egy nagy teljesen ajaxos oldalt amihez írni kell egy keresőt, így a könyvjelző/lapozás/vissza gombra eleve ott a kész megoldás...

a flash-es felvetésedhez pedig annyit hogy van ismerősöm aki egy olyan csapatban dolgozik akik 3d-s flash webáruházat csinálnak. igen, elsőre erre is mondhatnád hogy hülyeség de biztos vagyok benne hogy lesz nem egy ügyfelük. nem mindenki szereti a jacob nielsen féle puritánságot. kinézetre és funkcionalitásra sem.
10

Ugyan arról beszélünk

fchris82 · 2009. Szep. 6. (V), 17.19
Ezt mondtam az első hozzászólásom végén:
Persze ezektől függetlenül el tudok képzelni olyan eseteket, amikor a fentiek ellenére is jobb az AJAX, de az eddig elmondottak alapján rossz eszközzel próbálkozol, aminek máshol van meg a létjogosultsága.

Lehet, hogy az van, amit te mondasz, meg lehet, hogy az, amit én. Amennyiben az, amit te mondasz, akkor persze mehet az AJAX. Ha meg az, amit én, akkor nem a legjobb megoldás. Jónak ettől még jó.

a flash-es felvetésedhez pedig annyit hogy van ismerősöm aki egy olyan csapatban dolgozik akik 3d-s flash webáruházat csinálnak. igen, elsőre erre is mondhatnád hogy hülyeség de biztos vagyok benne hogy lesz nem egy ügyfelük. nem mindenki szereti a jacob nielsen féle puritánságot. kinézetre és funkcionalitásra sem.

10 évvel ezelőtt is voltak hasonló kísérletek, volt egy magyar áruház is, már nem tudom a nevét. Ott volt erre akkor a VRML. Sztem már minden országban készült legalább 1 ilyen, és okkal nem terjedt el. A felhasználók döntenek és döntöttek. Persze majd a jövőben is lesznek emberek, akik újra feltalálják a spanyol viaszt.
Ettől nem vetném el az ötletet és kíváncsian várom, hogy mi lesz! Tényleg. Mert lehet, hogy kitaláltak vmit, amire én most nem is gondolok és özönleni fognak a vevők az így létrehozott boltokba.

Jakob Nielsenről meg annyit, hogy ő nem egy sötét szobában gondolkodik és kitalál vmit, hanem MÉRÉSEKET VÉGEZ és következtetéseket von le. Nem önmagából indul ki! Max a következtetéseit lehet kritizálni. És mindegy, hogy az emberek mit mondanak, mert ha kérdezed őket, nagyrészt úgy is "hazudni" fognak. Nem tudatosan, de egészen más eredményeket fogsz kapni, ha csak figyelsz. Vannak az Amazon-nál sokkal szebb weboldalak, mégis ő keresi degeszre magát. A Google keresője is elég puritánra sikeredett, nem tudom, hogy emlékszel-e, hogy nézett ki egy AltaVista vagy egy Yahoo akkoriban. Lehet, hogy a 3d-s áruház messze jobban fog tetszeni a felhasználóknak, de ez még kevés, ettől nem fogják használni és nem fognak ott vásárolni, ha a keresett információt és terméket nehezen vagy csak picit lassabban találják meg, mint a normál áruházakban! A Google végzett egy olyan mérést, amiben pár század másodperccel késleltették az eredmény visszaadását és mérhetően csökkent a keresések száma! Ennyin múlik.

Nincs alapigazság. Mérj és következtess magad. Mi is ezt tesszük. Egyébként is, mindig vannak kivételek és soha ne mond, hogy soha ;)
11

Apropó!

fchris82 · 2009. Szep. 6. (V), 17.23
Félreértésre adhat okot a nielsenes rész! Amit állítok: ha vmi funkcionálisan átgondolt, de csúnya, attól még termelhet igazán sok pénzt. Ha vmi szép, de funkcionálisan átgondolatlan, az csődre van ítélve. Lehet szép és funkcionálisan átgondolt weblapot egyszerre csinálni. De önmagában az esztétikai élmény a weben még kevés.
12

ügyfelek

gex · 2009. Szep. 6. (V), 19.25
a jacob nielsenes részt az ügyfelek igényeire értettem. itt egy nagyon jó példa. nekem mint fejlesztőnek a legegyszerűbb megoldás a különálló html oldalak elkészítése. a "seo-szakember" (bármit is jelentsen ez ma magyarországon) szintén ezt preferálná, hiszen így minden oldal külön title/meta/stb elemekkel rendelkezik. a grafikus se akar olyan apróságokkal törődni hogy vizuálisan jelezze a dobozok nyitott/csukott állapotát. tehát ha úgy vesszük szakmailag egyáltalán nem javasolt ez a megoldás. ezt jobb cégeknél el is mondják az ügyfélnek, érvelnek, szakmáznak, példákat hoznak fel. de az ügyfelet még ekkor sem biztos hogy meg tudod győzni. ha ő továbbra is kitart az elképzelése mellett, tudomásul veszi hogy ezzel negatív irányba befolyásolja a keresőbeli helyezését és látogatószámát és ki is fizeti a plusz munkát akkor egyszerűen nem tudsz mit csinálni. vagy nem vállalod a munkát, de ezt nem mindenki engedheti meg magának.

és megelőzve következő kérdést, igen, nekem volt olyan ügyfelem aki ragaszkodott az ajaxhoz, bár ő maga sem tudta hogy az mit is jelent pontosan.
13

Nem ismétellek

fchris82 · 2009. Szep. 6. (V), 23.38
Ja, a hülye ügyfél egy másik eset, arra én most nem gondoltam, de igazad van. Csak ismételni tudnám amit te írtál, éppen más-más sztorival, azt meg minek? :)
6

fragment id

tgr · 2009. Szep. 6. (V), 01.06
fragment id-vel szokás az ilyet csinálni, nézd meg pl. a Gmail keresőjét. Könyvjelzőzhető stb, és minden információ az URL-ben van, nincsenek rejtett állapotok.

A gyakorlatban nem olyan egyszerű, mivel az IE szokás szerint csak jelentős trükközéssel vehető rá, hogy úgy viselkedjen, mint a többi böngésző; célszerű keresni valami könyvtárat, aminek az írói ezzel már elbajlódtak helyetted.
14

Huh!

tisch.david · 2009. Szep. 7. (H), 11.21
:) Majdnem hanyatt estem, hogy milyen "hitvitát" generáltam ezzel a kis kérdéssel... :D Köszönöm a válaszokat és a szempontokat! A vitát eldöntendő: tényleg azért AJAX-os a keresés, mert egy jó nagy menüstruktúra, hirdetések, ajánlók és miegyéb közé kell betölteni a keresés első 10 találatát. És - inf3rno felvetésére reagálva - ugyanezért _nem_ AJAX-os a termék oldal, mert ott viszont a körítésből is csomó minden változik. Eszközt a feladathoz. ;) (Egyébként valószínűleg ezt a jQuery history plugint választom.)

Üdv és köszi még egyszer:
Dávid
16

:-)

inf · 2009. Szep. 7. (H), 14.20
Nincs mit. Jó fejlesztést! :-)