X az Ajax-ban

ajaxAz 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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.