Az Ajax X-e eredetileg az XML miatt került oda a végére. A gyakorlat egyre inkább cáfolja az eredeti elképzelést, mert az XML szépen kiszorul a JSON-nal szemben. Perzse ha már lehet választani, akkor jön a dilemma, hogy melyiket is?
Az AJAX betűszó eredetileg az Asynchronous JavaScript and XML kifejezésből jött létre. Szép magyarosan Aszinkron JavaScript és XML. Az aszinkronitás arra utal, hogy a usernek vagy az alkalmazás más részeinek nem kell megvárnia míg a szervertől érkező válaszadatok megérkeznek. A szerver a válaszát szerencsére nem csak XML formában adhatja vissza, hanem bármi másban is, amit aztán a kliens oldalon fel tudunk dolgozni. 4 fő formátum van amivel érdemes foglalkoznunk.
Sima szöveg
- Jellemzők
- A sima szöveg nem igazán alkalmas bonyolultabb adatstruktúrák hordozására, így akkor használatos ha a szervertől valami egyszerű választ várunk. Ilyen lehet például egy visszaigazolás, hogy a kért műveletet sikeresen végrehajtotta.
- Szerver oldali támogatás
- bármilyen szerver oldali nyelv képes sima szöveget generálni.
- Elérhető
- közvetlenül elérhető a responseText tulajdonságon keresztül.
- Válasz adattípusa a kliens oldalon
- string
- Mikor használatos
- ha a választ nem kell feldolgozni, nem kell értelmezni, vagy egyszerűen csak megjelenítjük, vagy egyáltalán nem is jelenítjük meg.
- Példa az érkező adatra:
-
A feladat sikeresen elmentve!
- Példa a feldolgozásra:
-
aDiv.innerHTML = ajax.responseText;
XHTML
- Jellemzők
- Az xhtml-ben érkező válasz a kövekező lépés az adatkommunikációban. Előnye, hogy nem kell feldolgozni, csupán meg kell jeleníteni. Ha eleve rendelkezésünkre állnak olyan programrészek a szerver oldalon, melyek xhtml kimenetet produkálnak, akkor ezek felhasználásával könnyen módosíthatjuk működésüket úgy, hogy ajax lekéréseket is kiszolgáljanak. Tehát web 1-ről 2-re való áttéréskor első fázisként remekül megfelel.
- Szerver oldali támogatás
- bármelyik szerver oldali nyelv képes xhtml kimenetet produkálni.
- Elérhető
- közvetlenül elérhető a responseText tulajdonságon keresztül.
- Válasz adattípusa a kliens oldalon
- string
- Mikor használatos
- ha a választ nem kell feldolgozni, nem kell értelmezni, vagy egyszerűen csak megjelenítjük illetve ha a szerver oldalon már eleve a rendelkezésünkre állnak olyan kódok amik produkálják az xhtml kimenetet.
- Példa az érkező adatra:
-
<ul> <li>hari</li> <li>góra</li> </ul>
- Példa a feldolgozásra:
-
aDiv.innerHTML = ajax.responseText;
XML
- Jellemzők
- Az xml szabványos, strukturált adatleíró nyelv. A szerver oldalon szigorúan jól formázott xml választ kell létrehoznunk, amit a kliens oldalon külön fel kell dolgoznunk. Általában bonyolutabb és robosztusabb adatcsomagot eredményez mint a json.
- Szerver oldali támogatás
- A szerver oldali nyelvekben általában megtalálható valamiféle xml támogatás. Ha mégsem, vagy nem akarjuk őket használni, akkor az xml még mindig előállítható sima szövegként.
- Elérhető
- a responseXML tulajdonságon keresztül
- Válasz adattípusa a kliens oldalon
- objektum
- Mikor használatos
- Akkor használatos, ha a szerver oldalon eleve a rendelkezésünkre áll az xml kimenet, mondjuk egy rss csatornában, vagy valamilyen nyilvános apin keresztül érkezik a válasz xml-ben.
- Példa az érkező adatra:
-
<?xml version="1.0"?> <list> <entry> <nev>hari</nev> </entry> <entry> <nev>góra</nev> </entry> </list>
- Példa a feldolgozásra:
-
var nevek = ajax.responseXML.getElementsByTagName('nev'); for(i=0; i<nevek.length; i++){ lista = lista + '<li>' + nevek[i] + </li> } aDiv.innerHTML = '<ul>' + lista + </ul>
JSON
- Jellemzők
- A json eleve a javascript számára lett megalkotva, így a kliens oldalon a legegyszerűbb feldolgozási folyamatot eredményezi. Többnyire kisebb és jobban kezelhető adatcsomagot eredményez mint az xml.
- Szerver oldali támogatás
- Az újabb szerver oldali nyelvek általában rendelkeznek valamiféle json támogatással.
- Elérhető
- a responseText tulajdonságon keresztül
- Válasz adattípusa a kliens oldalon
- json objektum
- Mikor használatos
- A legszélesebb körben használatos válasz adattípus, alkalmas bármilyen adat ábrázolására és szállítására.
- Példa az érkező adatra:
-
{nevek: ['hari', 'góra']}
- Példa a feldolgozásra:
-
var v = ajax.responseText.stripTags().evalJSON(true); for(i=0; i<v.nevek.length; i++){ lista = lista + '<li>' + v.nevek[i] + '</li>'; } aDiv.innerHTML = '<ul>' + lista + '</ul>'
A fentiekből látható, hogy összetettebb adatok szállítására az xml és a json a szóba jöhető formátum, és már ebben a picsiny példában is látható, hoyg a json mennyivel egyszerűbb és kisebb adatcsomagot eredményez. Nagyobb vagy összetettebb adatok esetén a két formátum között jelentős méretbeni különbség lesz.
Amit nem szabad elfelejtenünk az a json esetében az átkos eval
. Ha jsonban érkezik az adat akkor nem szabad elfelejtenünk a beérkezett adatokat szűrni, nehogy bekapjunk egy kellemetlen xss támadást.