Asynchroniczny JavaScript i XML (ang. Asynchronous JavaScript and XML, AJAX) – technika tworzenia aplikacji internetowych, w których interakcja użytkownika z serwerem odbywa się bez przeładowywania całego dokumentu, w sposób asynchroniczny. Ma to umożliwiać bardziej dynamiczną interakcję z użytkownikiem niż w tradycyjnym modelu, w którym każde żądanie nowych danych wiąże się z przesłaniem całej strony HTML. Terminal AJAX został wymyślony przez Jesse Jamesa Garretta(inne języki)[1].

Podstawowe elementy AJAX

Na technikę tę składa się kilka elementów:

Teoretycznie są to wszystkie wymagane elementy, jednak w praktyce używane są jeszcze odpowiednie skrypty funkcjonujące po stronie serwera i współpracujące z bazą danych. Można sobie jednak bez nich poradzić, jeśli wszystkie potrzebne dane zostały już wcześniej wygenerowane (np. zawartość poszczególnych stron prostego serwisu).

Wady i ograniczenia

Przykład utworzenia nowego obiektu XMLHttpRequest

function ajaxFunction(){
  var xmlHttp;
  try{
    // Utworzenie obiektu XMLHttpRequest (silnik Gecko, WebKit, Presto, Trident w IE>6)
    xmlHttp=new XMLHttpRequest();
  } catch(e) {
    // Wyłapuje błąd jeśli JavaScript nie posiada obiektu XMLHttpRequest
    try {
      // Utworzenie obiektu ActiveXObject, który jest zawarty w kontrolce ActiveX IE
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        // Utworzenie obiektu ActiveXObject, dla innych wersji IE
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        // Wyświetlenie błędu o braku obsługi obiektu XMLHttpRequest
        alert("Your browser does not support AJAX!");
        return false;
      }
    }
  }
  // zwrócenie obiektu
  return xmlHttp;
}

Przykład pobierania danych JSON przez XHR

Uproszczone pobieranie w przeglądarkach wspierających standardowe tworzenie obiektu XHR oraz parsowanie JSON.

function pobierzDane(onLoad) {
	var request = new XMLHttpRequest();
	request.open('GET', 'data.json');
	request.onload = function () {
		var data = JSON.parse(request.responseText);
		onLoad(data);
	};
	request.send();
}

Przykład użycia API fetch

Funkcja fetch to nowe API dostępne w przeglądarkach, które upraszcza wysyłanie zapytań HTTP. Funkcja fetch zwraca obietnicę.

fetch('data.json').then(response => {
    return response.json();
}).then(data => {
   console.log(data);
});

Biblioteki AJAX

Popularne biblioteki JavaScript powiązane z AJAX-em
Popularne frameworki zawierające skrypty działające po stronie serwera
Nazwa Język skryptów Uwagi
Echo(inne języki) Java
Google Web Toolkit Java
IT Mill Toolkit(inne języki) Java
ItsNat Java
OpenXava Java
ZK Framework(inne języki) Java
Ajax.NET Professional ASP.NET
ASP.NET AJAX ASP.NET
Sajax PHP
Symfony PHP
PRADO PHP
Tigermouse PHP
Xajax PHP
Pyjamas(inne języki) Python

Zobacz też

Zobacz multimedia związane z tematem: AJAX
Zobacz publikacjęAjax w Wikibooks

Przypisy

  1. Jesse James Garrett: Ajax: A New Approach to Web Applications. Adaptive path. [zarchiwizowane z tego adresu (2008-07-02)]. (ang.).
  2. Fetch API. Mozilla Developer Network. [dostęp 2022-09-04].
  3. Louis Lazaris: Deep Linking in JavaScript and Ajax Applications. [w:] impressivewebs.com [on-line]. 17 grudnia 2009. [dostęp 2024-02-10].

Linki zewnętrzne