Ultimele tutoriale de dezvoltare web
 

AJAX - Evenimentul onreadystatechange


Evenimentul onreadystatechange

Atunci când este trimis o cerere către un server, dorim să efectueze anumite acțiuni bazate pe răspunsul.

Evenimentul onreadystatechange este declanșat de fiecare dată când se modifică readyState.

Proprietatea readyState deține statutul de XMLHttpRequest.

Trei proprietăți importante ale obiectului XMLHttpRequest:

Proprietate Descriere
onreadystatechange Magazine de o funcție (or the name of a function) care urmează să fie numit în mod automat de fiecare dată când se modifică proprietatea readyState
readyState Deține statutul de XMLHttpRequest. Modificări de la 0 până la 4:
0: să nu solicite inițializat
1: conectare la server stabilit
2: cerere primită
3: cerere de prelucrare
4: cerere terminat și răspunsul este gata
status 200: "OK"
404 Pagina nu a fost găsită

În cazul onreadystatechange, vom specifica ce se va întâmpla atunci când răspunsul server este gata pentru a fi procesate.

Când readyState este 4 și statutul este de 200, răspunsul este gata:

Exemplu

function loadDoc() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("demo").innerHTML = xhttp.responseText;
  }
};
Încearcă - l singur »

Note: Evenimentul onreadystatechange este declanșat de cinci ori (0-4) , o singură dată pentru fiecare schimbare în readyState.


Folosind o funcție callback

O funcție de apel invers este o funcție transmisă ca parametru pentru o altă funcție.

Dacă aveți mai mult de o sarcină AJAX pe site-ul dvs., ar trebui să creați o singură funcție standard pentru crearea obiectului XMLHttpRequest, și numesc acest lucru pentru fiecare sarcină AJAX.

Apelul funcției ar trebui să conțină URL - ul și ce să facă pe onreadystatechange (which is probably different for each call) , (which is probably different for each call) , (which is probably different for each call) :

Exemplu

function loadDoc(cFunc) {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    cFunc(xhttp);
  }
Încearcă - l singur »