Saltar la navegación

1.3.1.- Creación del objeto XMLHttpRequest.

Signo de interrogación.
kropekk_pl (Pixabay License)

Para poder programar con AJAX, necesitamos crear un objeto del tipo XMLHttpRequest, que va a ser el que nos permitirá realizar las peticiones en segundo plano al servidor web. Para ello primero crearás en la carpeta pública de tu servidor el archivo fecha.php que simplemente devuelve la fecha del servidor pasados 2 segundos. Su contenido sería el siguiente:

<?php
	// retrasamos 2 segundos la ejecución de esta página PHP.
	sleep(2);
	
	// Mostramos la fecha y hora del servidor web.
	echo "La fecha y hora del Servidor Web: ";
	echo date("j/n/Y G:i:s."); 
?>

Ahora crearemos el siguiente archivo:

<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>DWEC07 .- Ejemplo petición AJAX</title>
		<script type="text/javascript">
			let peticion;
			const iniciar = () => {
				peticion = new XMLHttpRequest();
				peticion.open('GET', "http://localhost/fecha.php"); 
				peticion.send();
				peticion.addEventListener("load", cargada);
				document.getElementById("estado").classList = [ 'cargando' ];
				document.getElementById("estado").innerText = "Cargando...";
			}

			const cargada = () => {
				document.getElementById("resultados").innerText = peticion.responseText;
				document.getElementById("estado").classList = [ 'cargada' ];
				document.getElementById("estado").innerText = "Cargada.";
			}

			window.addEventListener("load", iniciar, false);
		</script>
		<style>
			#resultados {
				background: yellow;
			}
			.cargando {
				background: red;
			}
			.cargada {
				background: green;
			}
		</style>
	</head>
	<body>
		<p>
			A continuación se cargarán por AJAX los datos recibidos en la solicitud ASINCRONA:
		</p>
		<p>
			Esta solicitud tardará 2 segundos aproximadamente, que es el tiempo de ejecución de la página PHP en el servidor
		</p>
		<p>
			Contenedor resultados:
			<div id="resultados"></div>
		</p>
		<p>
			Estado de las solicitudes:
			<div id="estado"></div>
		</p>
	</body>
</html>

Si abres esta archivo en tu navegador podrás comprobar que te muestra la página, te indica que está cargando la petición AJAX y que cuando ésta termina te muestra su resultado y te indica que ya ha se ha cargado. Te animo a que la pruebes.

Puedes observar que primero creamos un objeto XMLHttpRequest mediante su constructor. Mediante el método open indicamos la petición y mediante el método send la enviamos. Registramos el evento de la petición load que llamará a la función cargada cuando haya terminado la carga de nuestra petición. Luego mediante la propiedad responseText de la petición accedemos a la respuesta de dicha petición.

Citas para pensar

"El éxito no se logra sólo con cualidades especiales, es sobre todo un trabajo de constancia, de método y de organización."Sergent, J.P.