02-el objeto XMLHttpRequest

En ajax el objecto XMLHttpRequest es la base de todo

  1. Crear un objeto XMLHttpRequest
  2. Definir una función de devolución de llamada
  3. Abra el objeto XMLHttpRequest
  4. Enviar una solicitud a un servidor

El bjecto XMLHttpRequest

Todos los navegadores modernos admiten el objecto XMLHttpRequest

Los objectos XMLHttpRequest se pueden utilizar para cambiar datos con un servidor web por detras de las escenas.

quiero decir que se puede cambiar solo una parte de la pagina sin recargar la misma

...

Crear un objecto XMLHttpRequest

Para crear un obejecto XMLHttpRequest es tan simple como crear una variable

variable = new XMLHttpRequest();

Definir una función de devolución de llamada

Una función de devolución de llamada es una función que se pasa como parámetro a otra función.

En este caso, la función de devolución de llamada debe contener el código para ejecutar cuando el la respuesta está lista

Ejemplo
xhttp.onload = function() { Qué hacer cuando la respuesta está lista }

Enviar una solicitud

Para enviar una solicitud a un servidor, puede usar los métodos open() y send() del objeto: XMLHttpRequest

Codigo de ejemplo
// Crea un objecto XMLHttpRequest const xhttp = new XMLHttpRequest(); // Define la function de llamada xhttp.onload = function() { // Here you can use the Data } // Enviar una solicitud xhttp.open("GET", "ajax_info.txt"); xhttp.send();

Acceso a través de dominios

Por razones de seguridad, los navegadores modernos no permiten el acceso entre dominios.

Esto significa que tanto la página web como el archivo XML que intenta cargar deben estar ubicados en el mismo servidor.


Métodos de objeto XMLHttpRequest

Methodo Descripcion
new XMLHttpRequest() Crea un nuevo objeto XMLHttpRequest
abort() Cancela la solicitud actual
getAllResponseHeaders() Devuelve información de encabezado
getResponseHeader() Devuelve información de encabezado específica
open(method, url, async, user, psw) Especifica la solicitud método: el tipo de solicitud GET o POST url: la ubicación del archivo async: verdadero (asincrónico) o falso (sincrónico) usuario: nombre de usuario opcional psw: contraseña opcional
send() Envía la solicitud al servidor.Utilizado para solicitudes GET
send(string) Envía la solicitud al servidor.Utilizado para solicitudes POST
setRequestHeader() Agrega un par de etiqueta/valor al encabezado que se enviará

Propiedades del objeto XMLHttpRequest

Propriedad Descripcion
onload Define una función que se llamará cuando se reciba (cargue) la solicitud
onreadystatechange Define una función que se llamará cuando cambie la propiedad readyState
readyState Contiene el estado de XMLHttpRequest. 0: solicitud no inicializada 1: conexión de servidor establecida 2: solicitud recibida 3: solicitud de procesamiento 4: solicitud finalizada y respuesta lista
responseText Devuelve los datos de respuesta como una cadena.
responseXML Devuelve los datos de respuesta como datos XML
status Devuelve el número de estado de una solicitud 200: "Está bien" 403: "Prohibido" 404 No encontrado" Para obtener una lista completa, vaya a la Referencia de mensajes Http
statusText Devuelve el texto de estado (por ejemplo, "OK" o "Not Found")

La propiedad onload

Con el objecto XMLHttpRequest puede definir una función de devolución de llamada que se ejecutará cuando la solicitud recibe una respuesta

La funcion se define en la propriedad onload del objecto XMLHttpRequest

Codigo completo del ejemplo onload

<html>
<body>

<div id="demo">
<h2>The XMLHttpRequest Object</h2>
<button type="button" onclick="loadDoc()">Change Content</button>
</div>

<script>
function loadDoc() {
  const xhttp = new XMLHttpRequest();
  xhttp.onload = function() {
    document.getElementById("demo").innerHTML =
    this.responseText;
  }
  xhttp.open("GET", "ajax_info.txt");
  xhttp.send();
}
</script>

</body>
</html>

Múltiples funciones de devolución de llamada

Si tiene más de una tarea AJAX en un sitio web, debe crear una función para ejecutando el XMLHttpRequestobjeto y una función de devolución de llamada para cada Tarea AJAX.

La llamada de función debe contener la URL y qué función llamar cuando el la respuesta está lista.

Codigo del ejemplo
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) {
  // action goes here
}
function myFunction2(xhttp) {
  // action goes here
}

La propiedad onreadystatechange

La propriedad readyState contiene el estado de XMLHttpRequest

los onreadystatechange define una función de devolución de llamada que se ejecutará cuando cambie readyState

La propriedad status y statusText contienen el estado del objeto XMLHttpRequest

Propriedad Descripcion
onreadystatechange Define una función que se llamará cuando cambie la propiedad readyState
readyState Contiene el estado de XMLHttpRequest. 0: solicitud no inicializada 1: conexión de servidor establecida 2: solicitud recibida 3: solicitud de procesamiento 4: solicitud finalizada y respuesta lista
status 200: "OK" 403: "Forbidden" 404: "Page not found" For a complete list go to the Http Messages Reference
statusText Devuelve el texto de estado (por ejemplo, "OK" o "Not Found")

los onreadystatechange se llama a la función cada vez que cambia readyState.

Cuando readyState es 4 y el estado es 200, la respuesta está lista:

Codigo de ejemplo
        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();
       }
    







Publicar un comentario

0 Comentarios