Visszalépés AJAX-os oldalra - hogyan célszerű?
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
■ 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
Nem igazán értem
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.
Köszi a tippet!
Üdv:
Dávid
Ne használj ilyennél AJAX-ot vagy ne így
- 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.
miért ne?
...
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." ;)
Nem értek egyet
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.)
Second Company
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.
Végülis..
Vannak dolgok, amiket nem lehet megoldani javascript nélkül, ez az eset speciel nem az. :-)
... ...
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.
Ugyan arról beszélünk
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ó.
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 ;)
Apropó!
ügyfelek
é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.
Nem ismétellek
fragment id
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.
Huh!
Üdv és köszi még egyszer:
Dávid
:-)