Det kan ved første øjekast synes at JavaScriptâ € s XMLHttpRequest objekt er intenst kompliceret, men det er virkelig ISNA € t, hvis du tager det fra hinanden og se det lidt ad gangen. I virkeligheden er de fleste udviklere bruger kun nogle få kendte metoder og egenskaber. Men ita €, s helt muligt at udviklere ville bruge flere funktioner af dette objekt, hvis de vidste, at de eksisterede.
Sådan arbejder du med anmodningen
For at få midler fra serveren, skal du lave en forespørgsel. Efter alt, serveren doesnâ € t læse tanker. Du opbygger en anmodning ved hjælp af metoder og egenskaber, og så du bruger send () metode til at sende anmodningen youâ € ve bygget. Følgende liste beskriver de egenskaber, der normalt forbindes med anmodninger:
- timeout: Bestemmer tiden, i millisekunder, at anmodningen vil fortsætte forsøge at opnå en nødvendig ressource fra serveren.
- withCredentials: Angiver, at anmodningen bør omfatte Usera € s legitimationsoplysninger, når sat til true. De legitimationsoplysninger tillader adgang til sikre ressourcer på serveren.
- upload: Giver serveren med en XMLHttpRequestUpload objekt, som indeholder data serveren kræver at opfylde en anmodning.
Nu hvor du har en bedre idé om, hvilke egenskaber er tilgængelige for at gøre en anmodning, ita € s tid til at se på de metoder. Følgende metoder er normalt forbundet med at lave en anmodning fra en eller anden form:
- åben (): Opretter en ny anmodning. Anmodningen kan omfatte en række argumenter, som defineret i den følgende liste i den rækkefølge, du giver dem:
- metode: Bestemmer metoden til at få adgang til ressourcen. De to gyldige valg er GET og POST.
- URL: Angiver placeringen af ressourcen på serveren.
- asynkron: Bestemmer, om anmodningen er fremsat i en synkron eller asynkron måde. Den opkaldende skal give en callback funktion, når dette flag er sat til true (for en asynkron anmodning).
- brugernavn: Indeholder Usera € s logon navn for sikker adgang ressource.
- password: Indeholder Usera € s adgangskode til sikker adgang ressource.
- setRequestHeader (): Opretter et navn / værdi par til at omfatte med anmodningen header. Du leverer navn og værdi som to separate argumenter om, at opkaldet bruger til at skabe anmodningen header post.
- send (): Sender anmodning til serveren. Det lyder simpelt, men en række funktioner er på plads for at gøre processen mere pålidelig. Du kan læse om hele processen. Men fra en developerâ € s perspektiv, hvordan sender () arbejder ISNA € t næsten lige så vigtigt som det, sende () returnerer. SEND () metode enten returnerer data eller en fejl. Her er de fire mest almindelige fejl:
- netværk: Der er sket noget for at stoppe anmodningen fra at nå serveren. I nogle tilfælde en Domain Name System (DNS) fejl bevirker anmodningen om at få tabt, før den når serveren. I andre tilfælde opstår en Transport Layer Security (TLS) fejl, hvilket betyder, at din ansøgning ikke kan få de nødvendige legitimationsoplysninger.
- abort: Slutbrugeren har aflyst anmodningen. For at forårsage denne fejl, skal din ansøgning kalde abort () metode.
- timeout: En anmodning har vandret omkring på udkig efter den ressource det behov og til sidst opgivet. Anmodning har en timeout værdi forbundet med dem. Ellers kan anmodningen fortsat på udkig efter en ressource på ubestemt tid, hvis denne ressource doesnâ € t findes.
- anmodning: Thereâ € sa problem med anmodningen. Du normalt nødt til at grave dybere for at finde ud af præcis, hvad problemet er. Der er imidlertid en række almindelige årsager, herunder: anmoder om et ikke-eksisterende ressourcer, ikke tilvejebringe et påkrævet argument og oplysning af den forkerte type.
- afbryde (): Stopper udførelse af den aktuelle anmodning.
Sådan arbejder du med svaret
Den XMLHttpRequest objekt giver også en række respons egenskaber og metoder, som du bruger til at afgøre succes eller fiasko af en anmodning. Her er de egenskaber, som du normalt bruger, når du arbejder med dette formål:
- status: Returnerer HTTP statuskode. En statuskode på 200 betyder, at anmodningen er udført. Enhver anden kode normalt afspejler en slags problem med anmodningen processen. Her er en liste over statuskoder.
- statusText: Returnerer HTTP status som tekstmæssige værdi. For eksempel kan en status kode 200 returnerer en tekst værdi OK. Her er en liste over status tekst værdier og deres tilhørende koder.
- readyState: Angiver den aktuelle status for asynkron behandling. Staten kan være enhver af disse værdier:
- 0: anmodningen ikke initialiseret
- 1: Server-forbindelse etableret
- 2: Anmodning modtaget
- 3: Behandling forespørgsel
- 4: Anmod færdig og reaktion er klar
- responseType: Returnerer værdien af Content-Type respons header. Et program kan bruge denne værdi til at bestemme, hvordan man reagere på den type svar serveren har sendt. De fælles retur typer er
- "": En tom streng angiver, at afkastet typen er ukendt, eller at der er opstået en fejl, og thereâ € s ingen reaktion til at behandle.
- arraybuffer: Dataene er i form af et array.
- blob: Afsenderen har anvendt en BLOB'et (BLOB) til at gemme data.
- dokument: Dataene vises som struktureret information i et XML-dokument. Normalt dokumentet er fuldstændig, snarere end en XML fragment.
- JSON: Afsenderen har brugt JavaScript Object Notation (JSON) at indkapsle data.
- tekst: Oplysningerne vises som almindelig tekst, hvilket kan betyde, at det mangler sammenhæng og struktur. Der er dog nogle tekstformater struktureret, såsom kommaseparerede variabel (CSV).
- svar: Indeholder hele respons uden nogen fortolkning som et objekt.
- responseText: Indeholder kun teksten til et svar, når responseType værdien er "" (den tomme streng) eller tekst. Denne ejendom returnerer intet for andre responseType værdier.
- responseXML: Indeholder kun XML-dokumentet, når responseType værdien er "" (den tomme streng) eller dokument. Denne ejendom returnerer intet for andre responseType værdier.
De respons metoder hjælper du interagerer med svardataene på en eller anden måde. Her er de svar metoder:
- getResponseHeader (): Får en bestemt reaktion header værdi fra objektet respons. Du leverer værdien af svaret header du ønsker, såsom Content-Type, som et argument til metoden. Der er ingen ønskede respons overskrifter, og en server kan oprette brugerdefinerede headers.
- getAllResponseHeaders (): Opretter en række af alle de svar overskrifter undtagen dem, der er opført som Set-Cookie eller Set-cookie2.
- overrideMimeType (): Angiver værdien af Content-Type respons header.