AJAX (Asynchronous JavaScript and XML) är en kraftfull uppsättning webbutvecklingstekniker som använder olika webbtekniker på klientsidan för att skapa asynkron kommunikation mellan en webbsida och en server.
Med hjälp av AJAX kan dynamiska och interaktiva användarupplevelser skapas utan att sidan behöver laddas om. Genom asynkrona HTTP-förfrågningar från webbplatsens klientsida till servern sker datautbytet sömlöst i bakgrunden när användarna interagerar med sidan. AJAX manipulerar data dynamiskt i bakgrunden utan att avbryta användarnas interaktion med webbsidan.
I dagens webbutveckling är kunskaper i AJAX högt värderade och kan särskilja utvecklare från mängden. Mastering AJAX visar på en god förståelse för frontend development färdigheter. Med AJAX kan utvecklare skapa smidiga, interaktiva webbapplikationer och förbättra applikationens prestanda genom effektiv dataladdning, realtidsfunktioner och enkelsidiga applikationer.
Grunderna i AJAX
I webbutvecklingens barndom var webbplatser statisk HTML med liten eller begränsad interaktivitet. Genom att använda teknik på serversidan som PHP, Perl eller C# kunde man generera dynamiskt innehåll men var fortfarande beroende av att hela sidan laddades om.
Introduktionen av JavaScript och DOM möjliggjorde webbmanipulation och möjliggjorde mer interaktivitet på webbplatsen. Före AJAX gjorde iframes det möjligt att ladda innehåll asynkront. Före AJAX var det möjligt att ladda innehåll asynkront via iframes. År 1999 introducerade Microsoft XMLHttpRequest-objektet, vilket gjorde det möjligt för webbläsare att göra HTTP-förfrågningar asynkront, Detta var en av de viktigaste delarna som ledde till att AJAX bildades 2005.
AJAX (Asynchronous JavaScript and XML) är en kraftfull uppsättning webbutvecklingstekniker som använder olika webbtekniker på klientsidan för att skapa asynkron kommunikation mellan en webbsida och en server.
Kärnteknologier involverade:
JavaScript - språk som möjliggör dynamiska interaktioner och asynkron kommunikation med servern
XML - datautbytesformat som används i AJAX-förfrågningar. Även om XML är en del av AJAX-akronymen används den ibland för datautbyte. JSON (JavaScript Object Notation) används oftare idag eftersom det är lättare och enklare att analysera.
HTML - det märkspråk som används för att strukturera innehållet på webbsidan
CSS - stilmallspråket som används för att utforma webbsidan
Genom att använda en kombination av kärnteknologier som är involverade i AJAX kan vi skapa en responsiv användarupplevelse.
En enkel teknisk förklaring av hur AJAX fungerar är att ha en händelse på webbsidan, vilket kan vara ett klick på en knapp, att skicka in ett formulär eller att helt enkelt bläddra igenom en webbsida som utlöser en åtgärd. När åtgärden utlöses skickar JavaScript-koden en begäran till en server. När servern svarar analyserar JavaScript-koden svaret och gör något. Det kan utlösa en annan åtgärd eller uppdatera DOM, vilket sker i bakgrunden utan att avbryta användarflödet på webbplatsen.
Fördelar med att använda AJAX
Asynkron laddning av data
En av de bästa fördelarna med AJAX är asynkron dataladdning. Detta innebär att data kan hämtas från servern och manipuleras med DOM i bakgrunden utan att störa användarinteraktioner och webbplatsens beteende. Dessutom laddas bara nödvändig data, vilket minskar den tid som användarna väntar på uppdateringar i stället för att vänta på att ladda om hela sidan.
Förbättra användarupplevelsen utan att ladda om sidan
Denna funktion förbättrar användarupplevelsen. Användare kan interagera med olika applikationsdelar utan att ladda om sidan, vilket gör interaktionen sömlös. Användarna kan få omedelbar feedback om sina handlingar på webbplatsen med innehållsuppdateringar i realtid, vilket gör applikationen mer intuitiv och responsiv.
Förbättrad interaktivitet och hastighet minskad serverbelastning och bandbreddsanvändning
Selektiv dataöverföring minskar mängden data som skickas och tas emot från servern, vilket sparar bandbredd. AJAX-förfrågningar är mindre och mer specifika beroende på åtgärden på webbplatsen, vilket minskar den totala belastningen på servern eftersom servern behöver bearbeta färre förfrågningar. Detta kan leda till bättre serverprestanda. Kärnkomponenter i AJAX
- XMLHttpRequest-objekt: Detaljerad förklaring och exempel
- Skript på serversidan (PHP, ASP.NET): Hur Ajax interagerar med skript på serversidan
- Dataformat som används (XML, JSON och HTML)
XMLHttpRequest-objektet är en AJAX-komponent som används för kommunikation mellan klient och server. Det gör det möjligt för webbapplikationer att skicka och ta emot data utan att ladda om hela sidan.
Med JavaScript lägger vi till en händelse när den utlöses för att skapa en instans av XMLHttpRequest-objektet.
Ett exempel: När DOM laddas, skapa en instans av XMLHttpRequest-objektet.
document.addEventListener('DOMContentLoaded', (ev) => {
// instantiate XMLHttpRequest object and send data to server
let xhr = new XMLHttpRequest();
});
Genom att använda metoden "open" i XMLHttpRequest-objektet kan vi skicka HTTP-metoden (GET, POST, PUT, DELETE) som första parameter, URL:en till serverns slutpunkt och en flagga som anger att begäran ska vara asynkron.
xhr.open('GET', 'server-endpoint-url', true);
Sedan skickar vi begäran på servern
xhr.send();
Vi använder backend-tekniker på servern som PHP, Perl eller ASP.NET för att behandla begäran och returnera svaret i XML-, HTML- eller JSON-format.
JavaScript bearbetar sedan svaret från servern när svarsdatan är klar.
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
let data = JSON.parse(xhr.responseText);
// Update web page content
}
};
Det sista steget är DOM-manipulation, där JavaScript uppdaterar innehållet på webbsidan.
document.querySelector('.element-class').innerHTML = data.value;
Servrar bearbetar förfrågningar och genererar svar genom att interagera med databaser eller andra tjänster. Interaktion sker när klientsidan skapar och skickar en XMLHttpRequest till servern. Skriptet på serversidan bearbetar begäran och genererar ett svar från klientsidan. Vanligtvis är svaret i JSON-format, men det kan också vara XML eller HTML. JavaScript på klientsidan bearbetar svarsdata och uppdaterar DOM i enlighet med detta.
JSON är ett vanligt dataformat eftersom det är läsbart för människor, lätt att skriva, lättviktigt och enkelt att analysera i alla programmeringsspråk.
XML (eXtensible Markup Language) är en del av AJAX-akronymen, även om den inte används så mycket längre. Det är läsbart och lätt att förstå, men det har ersatts av JSON på grund av sin enkelhet.
HTML kan också användas som dataformat i AJAX-svar, särskilt för att uppdatera delar av en webbsida med förformaterat innehåll i stället för att formatera innehåll i JavaScript med rådata.
Utmaningar och begränsningar med AJAX
- Hantering av problem med webbläsarkompatibilitet
- Säkerhetsproblem: XSS- och CSRF-sårbarheter
- Felsökning av AJAX-applikationer
Även om moderna webbläsare har bra stöd för AJAX kan vissa äldre versioner ha problem och sakna vissa funktioner. För att hantera problem med webbläsarkompatibilitet bör utvecklare testa webbapplikationer i olika webbläsare, använda funktionsdetekteringsbibliotek för att upptäcka webbläsarkapacitet och tillhandahålla en reservlösning vid behov.
Det finns också några säkerhetsproblem vid användning av AJAX som alla utvecklare bör ha i åtanke.
XSS, eller cross-site scripting, är en attack som inträffar när skadliga skript injiceras i innehållet på webbsidor och sedan levereras till andra användare. Detta gör att angriparen kan köra skript i kontexten för en annan användares webbläsare. AJAX-applikationer är särskilt sårbara för den här typen av attacker eftersom de ofta uppdaterar delar av webbsidorna dynamiskt med data som hämtas från servern.
För att förhindra XSS-attacker i AJAX-applikationer:
- Sanera och validera inmatningar på både klient- och serversidan
- Escape data innan du injicerar den i DOM
- Implementera CSP (Content Security Policy)
- Om du använder bibliotek, använd säkra bibliotek och uppdatera regelbundet.
CSRF, eller Cross-Site Request Forgery, är en attack som inträffar när obehöriga kommandon skickas från en användare som en webbapplikation litar på. Attacker uppstår när en angripare lurar ett offer att utföra åtgärder i en webbapplikation där offret är autentiserat, vilket leder till att kontouppgifter ändras, köp görs eller andra åtgärder som behöriga användare kan göra.
För att förhindra CSRF-attacker i AJAX-applikationer:
- Implementera CSRF-tokens i formulär och AJAX-förfrågningar
- Använd attributet "SameSite" för cookies
- Använd anpassade rubriker
- Validera ursprungshuvud
De flesta moderna webbläsare har inbyggda utvecklarverktyg som hjälper till att felsöka JavaScript- och AJAX-begäranden.
Network tab kan inspektera AJAX-förfrågningar och svar samt kontrollera headers. Konsolfliken i webbläsarens utvecklingsverktyg innehåller fönster, meddelanden, varningar och fel med JavaScript-kod. JavaScript-funktionen console.log() gör att du kan skriva ut värden och spåra exekveringsflöden.
Anställer utvecklare som är duktiga på AJAX
Måste ha färdigheter för AJAX-utvecklare
Kunskaper i JavaScript - JavaScript är ett språk som används för att initiera AJAX-begäranden, hantera AJAX-svar, dynamiskt uppdatera DOM, hantera fel och felsöka.
HTTP- och AJAX-koncept - kännedom om HTTP-metoder (GET, POST, PUT, DELETE) och AJAX-koncept (XMLHttpRequests, Fetch API) är avgörande för att kommunicera med servrar och hämta eller skicka data asynkront.
DOM-manipulation - möjligheten att uppdatera sidinnehåll baserat på AJAX-svar.
Asynkron programmering - kunskap om tekniker för asynkron programmering, t.ex. Promises, callbacks och async/await.
JSON (JavaScript Object Notation) - JSON är det dataformat som används mest i AJAX-applikationer. Utvecklare bör vara skickliga på att analysera JSON-svar och konstruera JSON-nyttolaster för AJAX-förfrågningar.
Felhantering och felsökning - felhantering och felsökning av AJAX-relaterade problem är avgörande för att utveckla och underhålla AJAX-applikationer.
Cross-Origin Resource Sharing (CORS) - Förstå CORS-policyer och hur man hanterar cross-origin-förfrågningar. Speciellt för AJAX-förfrågningar till servrar som finns på olika domäner.
Bästa praxis för säkerhet - Kunskap om bästa praxis för säkerhet, t.ex. skydd mot XSS (Cross-Site Scripting) och CSRF (Cross-Site Request Forgery), är avgörande för att garantera säkerheten i AJAX-drivna webbapplikationer.
Utvecklingsverktyg för webbläsare - Det är viktigt att känna till utvecklingsverktyg för webbläsare för att kunna felsöka och hantera AJAX-förfrågningar, inspektera nätverkstrafik och analysera svar.
Trevligt att ha tekniska färdigheter
Frontend-ramverk och -bibliotek - Kännedom om populära frontend-ramverk och -bibliotek som React, Vue.js eller Angular kan hjälpa AJAX-utvecklare att bygga mer komplexa och funktionsrika användargränssnitt.
Backend-utveckling kunskap - Förståelse för koncept och tekniker för backend-utveckling, såsom Python, PHP eller Node.js, kan hjälpa AJAX-utvecklare att bättre förstå webbutveckling.
Prestandaoptimeringstekniker - Att förstå prestandaoptimeringstekniker, som latladdning, koddelning och cachning, kan skilja AJAX-utvecklare från mängden.
Progressive Web App (PWA)-utveckling - Kunskap om PWA-utvecklingsprinciper för att skapa mer native-liknande upplevelser, t.ex. offline-funktionalitet, push-meddelanden och installationsmöjligheter.
Realtidswebbteknik - Kännedom om realtidswebbteknik som WebSockets, Server-Sent Events (SSE) eller WebRTC för att implementera realtidsfunktioner som livechatt, meddelanden eller samarbetsredigering i webbapplikationer.
Intervjufrågor och exempel på svar
1. Vilka tekniker används i AJAX?
Exempel på svar: Tekniker som används i AJAX är JavaScript som det huvudsakliga skriptspråket, olika API:er som XHR-objekt, Fetch API etc., JSON, HTML, XHTML, CSS, XML och XSLT.
2. Vad är skillnaden mellan synkrona och asynkrona förfrågningar i AJAX?
Exempel på svar: Den största skillnaden ligger i hur webbläsaren hanterar exekvering av kod i väntan på svar från servern. Vid synkrona förfrågningar väntar webbläsaren på serverns svar innan nästa kodrad körs. I en asynkron begäran fortsätter koden däremot att exekvera nästa rad med skript utan att invänta svaret från servern efter att en begäran har gjorts till servern.
3. Vilka är de största fördelarna med att använda AJAX?
Exempel på svar:
- Möjliggör asynkron bearbetning av data
- Förbättrar prestanda
- Användarvänligt gränssnitt
- Förbättrar svarstiden från servern
4. Vilka säkerhetsaspekter måste du ta hänsyn till när du implementerar AJAX-funktionalitet?
Exempel på svar:
- Skriptning på flera webbplatser (XSS): Om korrekt validering och kodning inte implementeras kan skadliga skript injiceras i AJAX-svar och köras i användarens webbläsare, vilket äventyrar känsliga data.
- Förfalskning av begäran på annan plats (CSRF): Om en korrekt skyddsmekanism inte implementeras kan AJAX-förfrågningar manipuleras för att utföra obehöriga åtgärder på användarens vägnar.
- Resursdelning över ursprungsgränser (CORS): Felaktigt konfigurerade CORS-policyer kan leda till säkerhetsproblem, tillåta obehöriga förfrågningar och potentiellt dataläckage.
- Information disclosure: vem som helst kan se de data som hämtas med AJAX eftersom de hämtade data lagras i klientens webbläsare.
5. Vad är XMLHttpRequest?
Exempel på svar: XMLHttpRequest är ett API för webbläsare som används för att göra HTTP-förfrågningar från klientsidan till servern. Det gör det möjligt för användaren att hämta eller överföra data till en server utan att hela sidan behöver laddas om.
6. Vad är AJAX callback-funktionen?
Exempel på svar: En callback-funktion är en funktion som skickas som ett argument till en annan funktion och som utförs senare, vanligtvis efter att en händelse eller en asynkron operation har slutförts.
7. Är XMLHttpRequest och AJAX samma sak?
Exempel på svar: Nej, det gör jag inte. AJAX är en uppsättning tekniker för webbutveckling som använder olika tekniker på klientsidan för att skapa asynkrona webbapplikationer. XMLHttpRequest är en komponent i AJAX, och det är ett webbläsar-API som gör det möjligt för kod på klientsidan att göra HTTP-förfrågningar till en server.
8. Vad är skillnaden mellan GET- och POST-förfrågningar som används i AJAX?
Exempel på svar: AJAX GET-begäran hämtar data från en server. GET-begäranden lägger till parametrar i URL:en, vilket gör dem synliga i webbläsarens adressfält och begränsar mängden data som kan skickas. Vanligtvis används det för skrivskyddade operationer. Å andra sidan används AJAX POST-förfrågningar för att skicka data till servern. POST-förfrågningar skickar data i förfrågningskroppen, vilket gör att mer data kan skickas säkert till servern. Dessutom syns inte data som skickas med POST-begäranden i webbadressen, vilket gör det mer lämpligt att skicka känslig data.
9. Vad är den huvudsakliga användningen av AJAX?
Exempel på svar: Den huvudsakliga användningen av AJAX är att förbättra användarupplevelsen och skapa mer dynamiska och responsiva webbapplikationer genom att göra asynkrona förfrågningar till servern.
10. Hur skulle du hantera fel och undantag i AJAX-förfrågningar?
Exempel på svar: Fel och undantag kan hanteras av
- Implementera felåterkallningsfunktioner för att fånga upp fel under förfrågningsprocessen.
- Kontroll av HTTP-statuskoder som returneras av servern.
- Visa
Fel
-meddelanden för användaren så att användaren kan förstå vad som gick fel - Implementera en mekanism för att försöka om misslyckade AJAX-förfrågningar
- Ställ in tidsgränser för förfrågningar för att förhindra att de hänger på obestämd tid i händelse av nätverks- eller serverproblem.
- Implementera validering och felhantering på serversidan för att fånga upp och hantera fel på servern.
- Testa AJAX-funktionalitet under utveckling och övervaka AJAX-förfrågningar i produktionsmiljön för att upptäcka eventuella buggar.
Tips för att utvärdera praktiska AJAX-färdigheter
Förse kandidater med uppgifter som kräver asynkron dataladdning och dynamiska innehållsuppdateringar.
Detta kan åstadkommas genom att skapa eller använda API:er med öppen källkod, och uppgiften skulle bestå av två delar.
-
Den första delen skulle vara att skapa ett användargränssnitt där användarna skulle behöva använda XMLHTTPRequest-objektet för att hämta data från ett API och ändra innehållet i en webbapplikation.
-
Den andra delen skulle vara att skapa ett grundläggande formulär och använda XMLHttpRequest-objektet för att skicka data till API: et. Kandidaterna måste rensa inmatningar i formuläret och serialisera data innan de skickas.
Th3. är en grundläggande uppgift som skulle visa kandidatens kunskaper om hur man använder XMLHttpRequest-objektet för att skicka förfrågningar till ett API, analysera svar som ges av API och uppdatera DOM. Den andra delen skulle också visa kandidatens hantering av säkerhetsfrågor och hantering av dataformat som krävs av ett API.
Det skulle vara den mest grundläggande uppgiften. För att göra det ännu mer komplicerat kan man också tillhandahålla ett API som kräver att man skapar en token eller någon annan säkerhetslösning för att säkra användarens förfrågningar till API:et när POST-metoden används.
Slutsats
AJAX, eller Asynchronous JavaScript and XML, har förändrat webbutvecklingen sedan det introducerades. Viktiga fördelar och betydelsen av AJAX:
Asynkron dataladdning - asynkron laddning av data säkerställer oavbruten användarinteraktion med webbplatsen.
Förbättrad användarupplevelse - AJAX gör att endast en del av webbplatsen kan uppdateras utan att hela sidan behöver laddas om, vilket ger en mer sömlös användarupplevelse och gör webbapplikationer mer intuitiva och responsiva.
Förbättrad interaktivitet och hastighet - AJAX möjliggör realtidsfunktioner och dynamiska innehållsuppdateringar, vilket gör webbapplikationer mer interaktiva. Den selektiva dataöverföringen bidrar till snabbare svarstider och effektivare prestanda.
Reduktion av serverbelastning och bandbredd - AJAX minimerar mängden data som överförs mellan klient och server genom att endast skicka och uppdatera nödvändig data, vilket minskar bandbredden och serverbelastningen.
AJAX har sedan starten spelat en mycket viktig roll inom webbutveckling och skapat mer dynamiska och responsiva webbapplikationer. Dess inflytande är större i enkelsidiga applikationer och vid utveckling av mycket interaktiva webbaserade gränssnitt.
De grundläggande principerna för AJAX används av populära JavaScript-ramverk som React.js, Angular.js och Vue.js, som dominerar webbutvecklingen. Dessa ramverk erbjuder fler sätt att hantera asynkrona datainteraktioner och dynamiska innehållsuppdateringar.
AJAX har förbättrat utvecklingen av webbapplikationer och lagt grunden för framtida framsteg inom webbteknik.
I takt med att webbutvecklingen fortsätter att utvecklas förblir AJAX-konceptet relevant. Dagens webbutvecklare kan bygga vidare på dessa principer för att skapa mer användarvänliga, skalbara och effektiva webbapplikationer.