AJAX - Objet XMLHttpRequest

L'objet XMLHttpRequest est la base de l'AJAX.

  1. Créer un objet XMLHttpRequest
  2. Définir la fonction de rappel
  3. Ouvrir l'objet XMLHttpRequest
  4. Envoyer une requête au serveur

Objet XMLHttpRequest

Tous les navigateurs modernes le supportent Objet XMLHttpRequest.

L'objet XMLHttpRequest peut être utilisé pour échanger des données avec le serveur Web en arrière-plan. Cela signifie que l'on peut mettre à jour une partie du contenu du site Web sans recharger l'intégralité de la page.

Créer un objet XMLHttpRequest

Tous les navigateurs modernes (Chrome, Firefox, IE, Edge, Safari, Opera) ont des objets XMLHttpRequest intégrés. Objet XMLHttpRequest.

La syntaxe pour créer un objet XMLHttpRequest :

variable = new XMLHttpRequest();

Définir la fonction de rappel

La fonction de rappel est une fonction passée en tant que paramètre à une autre fonction.

Dans ce cas, la fonction de rappel doit contenir le code à exécuter lorsque la réponse est prête.

xhttp.onload = function() {
  // Ce que faire lorsque la réponse est prête
}

Envoyer la demande

Pour envoyer une demande au serveur, vous pouvez utiliser l'objet XMLHttpRequest. open() et send() Méthode :

xhttp.open("GET", "ajax_info.txt");
xhttp.send();

Exemple

// Créer un objet XMLHttpRequest
const xhttp = new XMLHttpRequest();
// Définir la fonction de rappel
xhttp.onload = function() {
  // Vous pouvez utiliser les données ici
}
// Envoyer la demande
xhttp.open("GET", "ajax_info.txt");
xhttp.send();

Essayez-le vous-même

Accès entre domaines (Access Across Domains)

Pour des raisons de sécurité, les navigateurs modernes ne permettent pas l'accès entre domaines.

Cela signifie que la page et le fichier XML qu'elle tente de charger doivent être situés sur le même serveur.

Les exemples sur CodeW3C.com ouvrent des fichiers XML situés dans le domaine CodeW3C.com.

Si vous souhaitez utiliser l'un des exemples ci-dessus sur l'une de vos pages, le fichier XML que vous chargez doit être situé sur votre propre serveur.

Méthodes de l'objet XMLHttpRequest

Méthode Descripción
new XMLHttpRequest() Créer un nouveau objet XMLHttpRequest.
abort() Annuler la demande en cours.
getAllResponseHeaders() Retourner les informations d'en-tête.
getResponseHeader() Retourner des informations d'en-tête spécifiques.
open(method, url, async, user, psw)

Définir la demande.

  • method:type de demande GET ou POST
  • url:emplacement du fichier
  • async:true (asynchrone) ou false (synchronisé)
  • user:nom d'utilisateur optionnel
  • psw:mot de passe optionnel
send() Envoyer une demande au serveur, utilisée pour les demandes GET.
send(string) Envoyer une demande au serveur, utilisée pour les demandes POST.
setRequestHeader() Ajouter un paires de balise/valeur aux en-têtes à envoyer.

Propriétés de l'objet XMLHttpRequest

Atributo Descripción
onload Définir la fonction à appeler lors de la réception (chargement) de la demande.
onreadystatechange Définir la fonction appelée lorsque l'attribut readyState change.
readyState

Guarda el estado de XMLHttpRequest

  • 0: La solicitud no se ha inicializado
  • 1: Se ha establecido la conexión del servidor
  • 2: La solicitud se ha recibido
  • 3: Se está procesando la solicitud
  • 4: La solicitud se ha completado y la respuesta está lista
responseText Devuelve los datos de respuesta en forma de cadena
responseXML Devuelve los datos de respuesta en formato XML
estado

Devuelve el número de estado de la solicitud

  • 200: "OK"
  • 403: "Prohibido"
  • 404: "No encontrado"

Para obtener una lista completa, por favor visite Manual de referencia de mensaje HTTP

statusText Devuelve el texto de estado (por ejemplo "OK" o "No encontrado")

Atributo onload

Al usar el objeto XMLHttpRequest, puede definir una función de retroalimentación para ejecutar cuando se reciba la respuesta a la solicitud

Por favor, define la función en el objeto XMLHttpRequest onload La función se define en el atributo

Exemple

xhttp.onload = function() {
  document.getElementById("demo").innerHTML = this.responseText;
}
xhttp.open("GET", "ajax_info.txt");
xhttp.send();

Essayez-le vous-même

Múltiples funciones de retroalimentación

Si hay múltiples tareas AJAX en el sitio web, debe crear una función que ejecute el objeto XMLHttpRequest y crear una función de retroalimentación para cada tarea AJAX

La llamada a la función debe incluir la URL y la función que se debe llamar cuando la respuesta esté lista

Exemple

loadDoc("url-1", myFunction1);
loadDoc("url-2", myFunction2);
function loadDoc(url, cFunction) {
  const xhttp = new XMLHttpRequest();
  xhttp.onload = function() {cFunction(this);}
  xhttp.open("GET", url);
  xhttp.send();
}
function myFunction1(xhttp) {
  // Aquí está la acción
}
function myFunction2(xhttp) {
  // Aquí está la acción
}

Atributo onload

readyState Atributo que guarda el estado de XMLHttpRequest

onreadystatechange Atributo que define una función de retroalimentación que se ejecuta cuando cambia el readyState

estado Atributo y statusText Atributo que guarda el estado del objeto XMLHttpRequest

Atributo Descripción
onreadystatechange Define la función que se llama cuando cambia el atributo readyState
readyState

Guarda el estado de XMLHttpRequest

  • 0: La solicitud no se ha inicializado
  • 1: Se ha establecido la conexión del servidor
  • 2: La solicitud se ha recibido
  • 3: Se está procesando la solicitud
  • 4: La solicitud se ha completado y la respuesta está lista
estado

Devuelve el número de estado de la solicitud

  • 200: "OK"
  • 403: "Prohibido"
  • 404: "No encontrado"

Para obtener una lista completa, por favor visite Manual de referencia de mensaje HTTP

statusText statusText

Retourne le texte d'état (par exemple "OK" ou "Not Found").

L'événement onreadystatechange est appelé à chaque changement de readyState. 4 et status est 200 Lorsque la réponse est prête :

Exemple

function loadDoc() {
  const xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById("demo").innerHTML =
      this.responseText;
    }
  };
  xhttp.open("GET", "ajax_info.txt");
  xhttp.send();
}

Essayez-le vous-même

L'événement onreadystatechange a été déclenché quatre fois (1-4), et le readyState change à chaque fois.