Ez a fordítás nem teljes. Kérjük segítsen ezt a cikket lefordítani angolról.

 

Az XMLHttpRequest API a szerverrel való direkt kommunikációra használható, a teljes oldal újratöltése nélkül. Ez lehetővé teszi a weboldalak bizonyos adatainak frissítését, a nélkül, hogy a felhasználónak meg kéne szakítania azt, amit éppen csinál.  Az XMLHttpRequest az Ajax alapja.

Történet

Az XMLHttpRequest objektumot eredetileg a Microsoft alkotta meg, később átvette a Mozilla, az Apple, és a Google is. Mára általánosan elfogadott szabvány lett a WHATWG által. A neve ellenére, az XMLHttpRequest több adattípussal képes dolgozni, nem csupán az XML-el, és a HTTP mellett más protokollokat is támogat (beleértve a file és az ftp protokollt is).

Konstruktor

XMLHttpRequest()
A konstruktor létrehoz egy üres XMLHttpRequest objektumot. Ez szükséges előfeltétele annak, hogy az objektum eljárásait meghívhassunk.
  var xhr = new XMLHttpRequest();
 

Tulajdonságok

Az XMLHttpRequest API az XMLHttpRequestEventTarget és az EventTarget tulajdonságait is örökli.

XMLHttpRequest.onreadystatechange
Ez az EventHandler (eseménykezelő) mindig meghívódik, amikor a readyState tulajdonság értéke megváltozik, így – szükség szerint – minden állapothoz külön esemény vagy eljárás rendelhető. Az alábbi példában minden állapotváltozásról tájékoztatjuk a felhasználót:
  xhr.onreadystatechange = function () {
    switch(xhr.readyState) {
      case 0: alert("A kérelem nem inicializált");
      break;
      case 1: alert("A kapcsolat létrejött");
      break;
      case 2: alert("A kérelem fogadva");
      break;
      case 3: alert("A kérelem feldolgozása folyamatban");
      break;
      default: alert("A kérelem feldolgozva, válasz kész");
    }
  };
 
A gyakorlatban erre azonban ritkán van szükség. Praktikusabb, ha csak a feldolgozott kérelemre érkező válaszra reagálunk (az alábbi példában kiírjuk a válasz szövegét):
  xhr.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      alert(this.responseText);
    }
  };
 
XMLHttpRequest.readyState Read only
A kérelem állapotát jelző előjel nélküli számmal tér vissza, amely lehet:
  1. - ha a kérés nem inicializált
  2. - ha a kapcsolat létrejött a szerverrel
  3. - ha a kérés fogadva
  4. - ha a kérés feldolgozása folyamatban
  5. - ha a kérés kész, válasz kész
XMLHttpRequest.response Read only
A válasz törzsét tartalmazza, melynek típusát a XMLHttpRequest.responseType tulajdonság értéke határozza meg.
XMLHttpRequest.responseText Read only
Visszatérési értéke lehet DOMString amely egyszerű szövegként tartalmazza a választ az elküldött kérelemre, vagy null,ha a kérelem sikertelen volt.
XMLHttpRequest.responseType
A válasz típusát határozza meg, amely lehet:
XMLHttpRequest.responseURL Read only
Visszatérési értéke a válasz szerializált URL-je, vagy üres sztring, ha az URL értéke null.
XMLHttpRequest.responseXML Read only Not available to workers
Egy Document-el tér vissza, amely tartalmazza a kérelemre kapott választ XML formátumban, vagy null-t, ha a kérés sikertelen, nem lehetett elküldeni, illetve a válasz nem jeleníthető meg XML formátumban.
XMLHttpRequest.status Read only
A szerver által a kérelemre küldött válasz HTTP státusz-kódját adja vissza, előjel nélküli, háromjegyű szám formátumban (pl. 200, ha a kérelem elfogadva, 404, ha a kért erőforrás nem található a szerveren - bővebben a HTTP státusz kódokról itt).
XMLHttpRequest.statusText Read only
A szerver által küldött válasz státusz-kódjához tartozó szöveggel (response message) tér vissza (pl. "200 OK", siker esetén, bővebben lásd fent).

Megjegyzés: a HTTP/2 specifikáció alapján (8.1.2.4 Response Pseudo-Header Fields) HTTP/2 válaszokat egy :status pseudo-header mező határozza meg, amely tartalmazza a HTTP státusz kód mezőt is. A HTTP/2 nem határozza meg, hogy a verzió és más kifejezések hogy jelenjenek meg a válasz HTTP/1.1 állapot-sorában.

XMLHttpRequest.timeout
Egy előjel nélküli egész szám, amely megadja a várakozási időt (ezredmásodpercben) a kapcsolat automatikus lezárásig.
XMLHttpRequestEventTarget.ontimeout
Ez egy EventHandler (eseménykezelő), amely a XMLHttpRequest.timeout tulajdonságban megadott idő túllépése esetén mindig meghívódik.
xhr.timeout = 4000; //Időtúllépés beállítása 4 másodpercre
xhr.ontimeout = function () { alert("Időtúllépés!!!"); }
/* Időtúllépés esetén az eseménykezelő egy névtelen
 függvényt hív meg, amely egy felugró ablakban tájékoztatja
 a felhasználót az időtúllépésről */
 
XMLHttpRequest.upload Read only
Minden XMLHttpRequest objektumhoz rendelkezik egy XMLHttpRequestUpload objektummal, amely adatátviteli információk összegyűjtésére használható, amikor az adatok átkerülnek a kiszolgálóra. Az upload tulajdonság ezt adja vissza.
XMLHttpRequest.withCredentials
Logikai érték (Boolean), that indicates whether or not cross-site Access-Control requests should be made using credentials such as cookies or authorization headers.

Nem szabványos tulajdonságok

XMLHttpRequest.channelRead only
Is a nsIChannel. The channel used by the object when performing the request.
XMLHttpRequest.mozAnonRead only
Logikai érték (Boolean). Ha értéke igaz (true), akkor a kérelem sütik és azonosító fejlécek nélkül lesz elküldve.
XMLHttpRequest.mozSystemRead only
Logikai érték (Boolean). If true, the same origin policy will not be enforced on the request.
XMLHttpRequest.mozBackgroundRequest
Logikai érték (Boolean). It indicates whether or not the object represents a background service request.
XMLHttpRequest.mozResponseArrayBuffer Obsolete since Gecko 6 Read only
Egy ArrayBuffer  objektum. A válasz a kérelemre egy JavaScript-stílusú tömb lesz.
XMLHttpRequest.multipartObsolete since Gecko 22
This Gecko-only feature, a boolean, was removed in Firefox/Gecko 22. Please use Server-Sent Events, Web Sockets, or responseText from progress events instead.

Eseménykezelők

Az onreadystatechange az XMLHttpRequest objektum olyan tulajdonsága, amely mindig meghívódik, amikor a readyState tulajdonság értéke megváltozik. Ezt az eseménykezelőt az összes böngésző támogatja.

A különböző böngészők által támogatott eseménykezelők száma egyre nagyobb (onload, onerror, onprogress, stb.). Ezeket a Firefox is mind támogatja. További információk az nsIXMLHttpRequestEventTarget objektumról és az XMLHttpRequest használatáról.

Az újabb böngészők (mint a Firefox is), támogatják az XMLHttpRequest események szabványos addEventListener általi figyelését. Az API ezen felül bekapcsolt (on*) értékre állítja a tulajdonságokat a kezelő függvényben.

Eljárások

XMLHttpRequest.abort()
Megszakítja az aktuális kérelmet.
XMLHttpRequest.getAllResponseHeaders()
A válasz összes fejlécét adja vissza egyszerű szövegként, \r\n (CRLF) sorvég karakterekkel elválasztva. Ha nem érkezett válasz a kérelemre, null értékkel tér vissza.
XMLHttpRequest.getResponseHeader()
A paraméterül kapott fejléc szöveges értékével tér vissza siker esetén, vagy null-al, ha nem érkezett válasz a kérelemre vagy a kért fejléc nem található a válaszban.
  xhr.getResponseHeader("Content-Type");
  
XMLHttpRequest.open()
Inicializálja az elküldendő kérelmet. Beállítja a kérelem továbbítására használt metódust (ez lehet post vagy get), a cél URL-t (a kérelmet fogadó/feldolgozó távoli állomány elérési útját) és az aszinkron kapcsolót (true = aszinkron[alapértelmezett], false = szinkron). Opcionálisan megadható paraméterek: felhasználónév és jelszó. Ezt az eljárást JavaScript kódból lehet meghívni, natív kódból az openRequest() eljárás ajánlott helyette.
  xhr.open("POST","feldolgoz.php", true);
  
XMLHttpRequest.overrideMimeType()
Felülbírálja a kiszolgáló által visszaadott MIME típust.
XMLHttpRequest.send()
Kérelem elküldése. Ha a kérelem aszinkron (ez az alapértelmezett), az eljárás visszatér, amint a kérelem el lett küldve.
XMLHttpRequest.setRequestHeader()
A post metódussal elküldött HTTP kérelem fejlécét állítja be. Két bemeneti paramétert vár: a fejléc nevét és értékét. A setRequestHeader() eljárást az open() után, de a send() előtt kell meghívni.
  xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  

Nem szabványos eljárások

XMLHttpRequest.init()
C++ kódból történő használatra inicializálja az objektumot.
Figyelmeztetés: Ezt az eljárást nem szabad JavaScript-ből meghívni.
XMLHttpRequest.openRequest()
Inicializálja a kérelmet. Ezt az eljárást natív kódból lehet használni a kérelem inicializálására, az open() eljárás helyett. További részletek az open() leírásában.
XMLHttpRequest.sendAsBinary()
A send() eljárás egy változata, ami bináris adatokat küld.

Specifikációk

Specifikáció Állapot Megjegyzés
XMLHttpRequest Living Standard Hatályos szabvány, aktuális változat

Böngésző támogatottság

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

Böngésző Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Alapvető támogatás (XHR1) 1 (Yes) 1.0 (1.7 or earlier) 7 (Yes) 1.2
send(ArrayBuffer) 9 (Yes) 9.0 (9.0) 10 11.60 ?
send(ArrayBufferView) 22 (Yes) 20.0 (20.0) ? ? ?
send(Blob) 7 (Yes) 3.6 (1.9.2) 10 12 ?
send(FormData) 6 (Yes) 4.0 (2.0) 10 12 ?
sendAsBinary(DOMString) No support[1] No support 2.0 (1.8.1) No support No support No support
response 10 (Yes) 6.0 (6.0) 10 11.60 (Yes)
responseType = 'arraybuffer' 10 (Yes) 6.0 (6.0) 10 11.60 (Yes)
responseType = 'blob' 19 (Yes) 6.0 (6.0) 10 12 (Yes)
responseType = 'document' 18 (Yes) 11.0 (11.0) 10 No support 6.1
responseType = 'json' 31 No support 10.0 (10.0) No support 12[2]
No support 16
17
(Yes)
Folyamat-követő események 7 (Yes) 3.5 (1.9.1) 10 12 (Yes)
withCredentials 3 (Yes) 3.5 (1.9.1) 10 12 4
timeout 29.0 (Yes) 12.0 (12.0) 8 12
16
(Yes)
responseType = 'moz-blob' No support No support 12.0 (12.0) No support No support No support
Büngésző Android Chrome for Android Edge Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Alapvető támogatás ? 1.0 (Yes) (Yes) ? ? ?
send(ArrayBuffer) ? ? (Yes) ? ? ? ?
send(ArrayBufferView) ? ? (Yes) ? ? ? ?
send(Blob) ? ? (Yes) ? ? ? ?
send(FormData) ? ? (Yes) ? ? ? ?
sendAsBinary(DOMString) ? ? No support ? ? ? ?
response ? ? (Yes) ? ? ? ?
responseType = 'arraybuffer' ? ? (Yes) ? ? ? ?
responseType = 'blob' ? ? (Yes) ? ? ? ?
responseType = 'document' ? ? (Yes) ? ? ? ?
responseType = 'json' ? ? No support ? ? ? ?
Folyamat-követő események ? ? (Yes) ? ? ? ?
withCredentials ? ? (Yes) ? ? ? ?
timeout ? ? (Yes) ? ? ? ?
responseType = 'moz-blob' ? ? No support ? ? ? ?

[1] There is a polyfill available to support sendAsBinary().

[2] Before switching to Blink/Chromium, Opera supported responseType=json between Opera 12 and Opera 15. Support was added again in Opera 17.

Hivatkozások

Dokumentum címkék és a közreműködők

Ezen oldal közreműködői: dominicus-75
Utoljára frissítve: dominicus-75,