XML DOM - XMLHttpRequest-objektet
- Föregående sida DOM Text
- Nästa sida DOM XMLSerializer
XMLHttpRequest object
XMLHttpRequest-objektet erbjuder fullständig åtkomst till HTTP-protokollet, inklusive förmågan att göra POST- och HEAD-förfrågningar samt vanliga GET-förfrågningar. XMLHttpRequest kan returnera webbtjänsteservarens svar synkront eller asynkront och kan returnera innehållet som text eller i form av ett DOM-dokument.
Trots att det heter XMLHttpRequest är det inte begränsat till att användas med XML-dokument: det kan ta emot alla typer av textdokument.
XMLHttpRequest-objektet är känt som AJAX är en avgörande funktion i arkitekturen för webbapplikationer.
webbläsarstöd
XMLHttpRequest får god stöd från alla moderna webbläsare. Den enda webbläsarberoende är skapandet av XMLHttpRequest-objektet. I IE 5 och IE 6 måste man använda den specifika IE-konstruktören ActiveXObject(). Som i XMLHttpRequest object Detta avsnitt introducerar.
W3C-standardisering
XMLHttpRequest-objektet har inte standardiserats, men W3C har börjat med standardiseringsarbete. Innehållet i denna handbok är baserat på standardiseringsförslag.
Den aktuella XMLHttpRequest-implementeringen är ganska enhetlig. Men det finns små skillnader jämfört med standarden. Till exempel kan en implementering returnera null, medan standarden kräver en tom sträng, eller implementeringen kan sätta readyState till 3 utan att garantera att alla responshuvud är tillgängliga.
Egenskap
readyState
Status för HTTP-förfrågan. När en XMLHttpRequest skapas för första gången börjar värdet för detta attribut från 0, tills den fullständiga HTTP-svaret har mottagits, ökar detta värde till 4.
Varje av de 5 tillstånden har en tillhörande informell namn. Tabellen nedan visar tillstånd, namn och innebörd:
Status | Namn | Beskrivning |
---|---|---|
0 | Uninitialized | Initialstatus. XMLHttpRequest-objektet har skapats eller har återställts av abort() metoden. |
1 | Open | open() metoden har anropats, men send() metoden har inte anropats. Förfrågan har inte skickats. |
2 | Sent | Send() metoden har anropats, HTTP-förfrågan har skickats till webbservern. Ingen respons har mottagits. |
3 | Receiving | Alla responshuvud har tagits emot. Responskroppen börjar tas emot men är inte färdig. |
4 | Loaded | HTTP-svaret har helt tagits emot. |
Värdet för readyState minskar inte, om inte abort() eller open() metoden anropas under behandlingsprocessen för en förfrågan. Varje gång värdet för detta attribut ökar utlöser det onreadystatechange eventhanteraren.
responseText
Hittills mottagen responskropp från servern (exklusive huvud), eller om inga data har mottagits än, är en tom sträng.
Om readyState är mindre än 3 är detta attribut en tom sträng. När readyState är 3 returnerar detta attribut den del av svaret som redan har mottagits. Om readyState är 4 sparar detta attribut den fullständiga responskroppen.
Om svaret innehåller en huvudrubrik som specificerar teckenkoding för responskroppen, använd denna koding. Annars antas att Unicode UTF-8 används.
responseXML
Responsen till förfrågan, analyserad till XML och som Dokumentobjektreturneras.
status
av servern. HTTP-statuskodt.ex. 200 betyder framgång, medan 404 betyder "Not Found"-fel. Läsning av detta attribut orsakar ett undantag när readyState är mindre än 3.
statusText
Denna egenskap specificerar HTTP-statuskoden med namn istället för nummer. Det vill säga när statusen är 200 är det "OK", och när statusen är 404 är det "Not Found". Som status-attributet orsakar läsning av detta attribut en undantag när readyState är mindre än 3.
Händelsehanterare
onreadystatechange
En händelsehanteringsfunktion som anropas varje gång readyState-attributet ändras. När readyState är 3 kan den också anropas flera gånger.
Metod
abort()
Avbryt den aktuella svarsförfrågan, stäng anslutningen och avsluta alla pågående nätverksaktiviteter.
Denna metod återställer XMLHttpRequest-objektet till en readyState av 0 och avbryter alla pågående nätverksaktiviteter. Till exempel, om en förfrågan har tagit för lång tid och svaret inte längre är nödvändigt, kan denna metod anropas.
getAllResponseHeaders()
Returnera HTTP-svarshuvuden som en oavläst sträng.
Om readyState är mindre än 3, returnerar denna metod null. Annars returnerar den alla HTTP-svarshuvuden som servern har skickat. Huvudena returneras som en enda sträng, en rad per huvud. Varje rad avskiljs av en ny rad "\r\n".
getResponseHeader()
Returnera värdet för det specifika HTTP-svarshuvudet. Denna parameter är namnet på det HTTP-svarshuvudet som ska returneras. Du kan använda vilket tecken som helst för att definiera huvudnamnet, och jämförelsen med huvudet är inte känslig för stora och små bokstäver.
Värdet som returneras av denna metod är värdet för den specifika HTTP-svarshuvudet, om denna huvudet inte har mottagits eller om readyState är mindre än 3, är det en tom sträng. Om flera huvuden med specifikt namn har mottagits, samlas värdet för dessa huvuden och returneras, separerade av komma och blanksteg.
open()
Initialisera HTTP-förfrågan parametrar, till exempel URL och HTTP-metod, men skicka inte förfrågan.
send()
Skicka en HTTP-förfrågan, använda parametrarna som passerades till open() -metoden samt den valfria förfrågan som skickades till denna metod.
setRequestHeader()
Sätt eller lägg till en HTTP-förfrågan till en öppen men inte skickad förfrågan.
XMLHttpRequest.open()
Initiera HTTP-förfrågningsparametrar
Syntaks
open(method, url, async, username, password)
method-parametern är HTTP-metoden som används för förfrågan. Värden inkluderar GET, POST och HEAD.
url-parametern är huvudet på förfrågan. De flesta webbläsare genomför en säkerhetsstrategi för samma källa och kräver att denna URL har samma värdnamn och port som texten som innehåller skriptet.
async-parametern indikerar att förfrågan bör köras asynkront. Om denna parameter är false är förfrågan synkron, och anrop till send() kommer att blockera tills svaret helt har mottagits. Om denna parameter är true eller utesluts är förfrågan asynkron och kräver vanligtvis en onreadystatechange -eventhanterare.
Användarnamn och lösenordsparametrarna är valfria och tillhandahåller autentiseringskvalifikationer för behörighet som krävs av url. Om de specificeras, kommer de att ersätta någon behörighet som specificerats av url.
Förklaring
Denna metod initierar kravparametrarna för att användas av send() -metoden senare. Den ställer in readyState till 1, tar bort alla tidigare specificerade kravhuvuden och alla tidigare mottagna responshuvuden, och ställer in responseText, responseXML, status och statusText-parametrarna till deras standardvärden. Det är säkert att anropa denna metod när readyState är 0 (när XMLHttpRequest-objektet just har skapats eller när abort() -metoden har anropats) och när readyState är 4 (när svaret har mottagits). När denna metod anropas för någon annan status, är open() -metodens beteende specificerat.
Förutom att spara de kravparametrar som används av send() -metoden och återställa XMLHttpRequest-objektet för återanvändning, utförer open() -metoden inget annat. Det är viktigt att notera att när denna metod anropas, öppnar implementeringen vanligtvis inte en nätverksanslutning till webbtjänsten.
XMLHttpRequest.send()
Skicka en HTTP-förfrågan
Syntaks
skicka(kropp)
Om HTTP-metoden som specificeras genom att anropa open() är POST eller PUT, specificerar kropparametret kravet på anropet, som en sträng eller DokumentobjektOm kravet på kroppen inte är nödvändigt, är denna parameter null. För alla andra metoder är denna parameter inte tillgänglig och bör vara null (vissa implementeringar tillåter inte att detta argument utesluts).
Förklaring
Denna metod orsakar att en HTTP-förfrågan skickas. Om open() inte har anropats tidigare, eller mer specifikt, om readyState inte är 1, kastar send() ett undantag. Annars skickar den en HTTP-förfrågan som består av följande delar:
- HTTP-metoden, URL och autentiseringskvalifikationer som specificerades vid tidigare anrop av open() (om det finns något).
- Förfrågningshuvud som specificerades vid tidigare anrop av setRequestHeader() (om det finns något).
- Överförs till denna metod body Parametrar.
När förfrågan har publicerats, sätter send() readyState till 2 och triggar onreadystatechange-handlaren.
Om parametern async för tidigare anropade open() är false, kommer denna metod att blockera och inte returnera, tills readyState är 4 och serverns svar har helt mottagits. Annars, om async-parametern är true eller om den har hopps över, returnerar send() omedelbart och som kommer att visas senare, kommer serverns svar att behandlas i en bakgrundstråd.
Om serverns svar innehåller en HTTP-omdirigering, följer metoden send() eller bakgrundssträngen automatiskt omdirigeringen. När alla HTTP-svarshuvud har mottagits, sätter send() eller bakgrundssträngen readyState till 3 och triggar onreadystatechange-handlaren. Om svaret är långt, kan send() eller bakgrundssträngen trigga onreadystatechange-handlaren i status 3: detta kan användas som en nedladdningsindikator. Slutligen, när svaret är klart, sätter send() eller bakgrundssträngen readyState till 4 och triggar handlaren för sista gången.
XMLHttpRequest.setRequestHeader()
Syntaks
setRequestHeader(name, value)
Parametervärdet name är namnet på den huvudrubrik som ska ställas in. Detta värde bör inte inkludera tomma tecken, kolon eller nyckelrad.
Parametervärdet value är värdet för huvudrubriken. Detta värde bör inte inkludera nyckelrad.
Förklaring
Metoden setRequestHeader() specificerar en huvudrubrik för en HTTP-forespällning, som bör inkluderas i den förfrågan som publiceras genom att anropa send(). Denna metod kan endast anropas när readyState är 1, till exempel efter att ha anropat open(), men innan send() anropas.
Om en huvudrubrik med specificerat namn redan har angetts, är det nya värdet för denna rubrik: det tidigare angivna värdet, plus kommatecken, blanka tecken och det värde som denna anrop specificerar.
Om open() anropet specificerar en autentiseringsstatus, skickar XMLHttpRequest automatiskt en lämplig Authorization-förfrågningshuvud. Men du kan använda setRequestHeader() för att lägga till detta huvud. På samma sätt inkluderas lämpliga Cookie- eller Cookie2-huvuden automatiskt i förfrågan om webbservern har sparat och överfört en cookie som är relaterad till URL:n som angetts till open(). Dessa cookie kan läggas till i huvudet genom att anropa setRequestHeader(). XMLHttpRequest kan också tillhandahålla en standardvärde för User-Agent-huvudet. Om den gör det, läggs alla värden du anger för detta huvud till detta standardvärde efteråt.
Vissa förfrågningshuvuden sätts automatiskt av XMLHttpRequest istället för av denna metod för att följa HTTP-protokollet. Detta inkluderar sådana huvuden som är relaterade till proxy:
- Host
- Connection
- Keep-Alive
- Accept-charset
- Accept-Encoding
- If-Modified-Since
- If-None-Match
- If-Range
- Range
- Föregående sida DOM Text
- Nästa sida DOM XMLSerializer