---
title: XMLHttpRequest
slug: Web/API/XMLHttpRequest
translation_of: Web/API/XMLHttpRequest
---
{{APIRef("XMLHttpRequest")}}
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.
{{InheritanceDiagram}}
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
- {{domxref("XMLHttpRequest.XMLHttpRequest", "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 {{domxref("XMLHttpRequestEventTarget")}} és az {{domxref("EventTarget")}} tulajdonságait is örökli.
- {{domxref("XMLHttpRequest.onreadystatechange")}}
- Ez az {{domxref("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);
}
};
- {{domxref("XMLHttpRequest.readyState")}} {{readonlyinline}}
- A kérelem állapotát jelző
előjel nélküli számmal
tér vissza, amely lehet:
- - ha a kérés nem inicializált
- - ha a kapcsolat létrejött a szerverrel
- - ha a kérés fogadva
- - ha a kérés feldolgozása folyamatban
- - ha a kérés kész, válasz kész
- {{domxref("XMLHttpRequest.response")}} {{readonlyinline}}
- A válasz törzsét tartalmazza, melynek típusát a {{domxref("XMLHttpRequest.responseType")}} tulajdonság értéke határozza meg.
- {{domxref("XMLHttpRequest.responseText")}} {{readonlyinline}}
- Visszatérési értéke lehet {{domxref("DOMString")}} amely egyszerű szövegként tartalmazza a választ az elküldött kérelemre, vagy
null,
ha a kérelem sikertelen volt.
- {{domxref("XMLHttpRequest.responseType")}}
- A válasz típusát határozza meg, amely lehet:
- üres sztring (alapértelmezett)
- {{domxref("ArrayBuffer")}} objektum
- {{domxref("Blob")}} objektum
- {{domxref("Document")}}
- JavaScript objektum (JSON)
- {{domxref("DOMString")}}
- {{domxref("XMLHttpRequest.responseURL")}} {{readonlyinline}}
- Visszatérési értéke a válasz szerializált URL-je, vagy üres sztring, ha az URL értéke null.
- {{domxref("XMLHttpRequest.responseXML")}} {{readonlyinline}}
- Egy {{domxref("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. Not available in workers.
- {{domxref("XMLHttpRequest.status")}} {{readonlyinline}}
- 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).
- {{domxref("XMLHttpRequest.statusText")}} {{readonlyinline}}
- 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.
- {{domxref("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.
- {{domxref("XMLHttpRequestEventTarget.ontimeout")}}
- Ez egy {{domxref("EventHandler")}} (eseménykezelő), amely a {{domxref("XMLHttpRequest.timeout")}} tulajdonságban megadott idő túllépése esetén mindig meghívódik. {{gecko_minversion_inline("12.0")}}
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 */
- {{domxref("XMLHttpRequest.upload")}} {{readonlyinline}}
- Minden XMLHttpRequest objektumhoz rendelkezik egy {{domxref("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.
- {{domxref("XMLHttpRequest.withCredentials")}}
- Logikai érték ({{domxref("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
- {{domxref("XMLHttpRequest.channel")}}{{ReadOnlyInline}}
- Is a {{Interface("nsIChannel")}}. The channel used by the object when performing the request.
- {{domxref("XMLHttpRequest.mozAnon")}}{{ReadOnlyInline}}
- Logikai érték ({{domxref("Boolean")}}). Ha értéke igaz (true), akkor a kérelem sütik és azonosító fejlécek nélkül lesz elküldve.
- {{domxref("XMLHttpRequest.mozSystem")}}{{ReadOnlyInline}}
- Logikai érték ({{domxref("Boolean")}}). If true, the same origin policy will not be enforced on the request.
- {{domxref("XMLHttpRequest.mozBackgroundRequest")}}
- Logikai érték ({{domxref("Boolean")}}). It indicates whether or not the object represents a background service request.
- {{domxref("XMLHttpRequest.mozResponseArrayBuffer")}}{{gecko_minversion_inline("2.0")}} {{obsolete_inline("6")}} {{ReadOnlyInline}}
- Egy
ArrayBuffer
objektum. A válasz a kérelemre egy JavaScript-stílusú tömb lesz.
- {{domxref("XMLHttpRequest.multipart")}}{{obsolete_inline("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.
Metódusok
- {{domxref("XMLHttpRequest.abort()")}}
- Megszakítja az aktuális kérelmet.
- {{domxref("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.
- {{domxref("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");
- {{domxref("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);
- {{domxref("XMLHttpRequest.overrideMimeType()")}}
- Felülbírálja a kiszolgáló által visszaadott MIME típust.
- {{domxref("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.
- {{domxref("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 metódusok
- {{domxref("XMLHttpRequest.init()")}}
- C++ kódból történő használatra inicializálja az objektumot.
Figyelmeztetés: Ezt a metódust nem szabad JavaScript-ből meghívni.
- {{domxref("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()
helyett. További részletek az open()
leírásában.
- {{domxref("XMLHttpRequest.sendAsBinary()")}}{{deprecated_inline()}}
- A
send()
egy változata, ami bináris adatokat küld.
Specifikációk
Specifikáció |
Állapot |
Megjegyzés |
{{SpecName('XMLHttpRequest')}} |
{{Spec2('XMLHttpRequest')}} |
Hatályos szabvány, aktuális változat |
Böngésző támogatottság
{{Compat("api.XMLHttpRequest")}}
Hivatkozások