Tutorial de PHP Ajax con ejemplo
โก Resumen inteligente
Ajax en PHP permite que una pรกgina web intercambie pequeรฑas cantidades de datos con el servidor y actualice parte de la pรกgina sin recargarla por completo. Este tutorial muestra cรณmo crear una bรบsqueda en tiempo real, explicando el enfoque clรกsico de XMLHttpRequest y la alternativa moderna de la API Fetch.

ยฟQuรฉ es Ajax?
AJAX significa asรญncrono JavaScript XML. Es una tecnologรญa que reduce las interacciones entre el servidor y el cliente. Lo hace actualizando solo una parte de una pรกgina web en lugar de la pรกgina completa. Las interacciones asรญncronas se inician mediante JavaScript. El propรณsito de AJAX es intercambiar pequeรฑas cantidades de datos con el servidor sin recargar la pรกgina.
JavaScript es un lenguaje de scripting del lado del cliente. Se ejecuta en el lado del cliente mediante navegadores web que admiten JavaGuiรณn. JavaEl cรณdigo de script solo funciona en navegadores que tienen JavaScript habilitado.
XML XML es el acrรณnimo de Extensible Markup Language (Lenguaje de Marcado Extensible). Se utiliza para codificar mensajes en formatos legibles tanto para humanos como para mรกquinas. Es similar a HTML, pero permite crear etiquetas personalizadas. Para obtener mรกs detalles sobre XML, consulte el artรญculo sobre XML.
ยฟPor quรฉ utilizar AJAX?
- Permite desarrollarping Aplicaciones web interactivas y completas, al igual que las aplicaciones de escritorio.
- La validaciรณn puede realizarse mientras el usuario completa un formulario, incluso antes de enviarlo. Esto se logra mediante la funciรณn de autocompletado. Las palabras que el usuario escribe se envรญan al servidor para su procesamiento, y el servidor responde con palabras clave que coinciden con lo que el usuario ingresรณ.
- Se puede utilizar para rellenar un menรบ desplegable en funciรณn del valor de otro menรบ desplegable.
- Los datos se pueden recuperar del servidor y solo se puede actualizar una parte especรญfica de la pรกgina sin cargar la pรกgina completa. Esto es muy รบtil para partes de pรกginas web que cargan elementos como:
- Tweets
- Comentarios
- Usuarios que visitan el sitio y datos similares en tiempo real.
Cรณmo crear una aplicaciรณn PHP Ajax
Crearemos una aplicaciรณn sencilla que permita a los usuarios buscar marcos PHP MVC populares.
Nuestra aplicaciรณn tendrรก un cuadro de texto donde los usuarios podrรกn escribir los nombres de los frameworks.
A continuaciรณn, utilizaremos AJAX para buscar una coincidencia y mostraremos el nombre completo del framework justo debajo del formulario de bรบsqueda.
Paso 1) Crear la pรกgina de รญndice
index.php
<html> <head> <title>PHP MVC Frameworks - Search Engine</title> <script type="text/javascript" src="auto_complete.js"></script> </head> <body> <h2>PHP MVC Frameworks - Search Engine</h2> <p><b>Type the first letter of the PHP MVC Framework</b></p> <form method="POST" action="index.php"> <p><input type="text" size="40" id="txtHint" onkeyup="showName(this.value)"></p> </form> <p>Matches: <span id="txtName"></span></p> </body> </html>
AQUร,
- โonkeyup=โshowName(this.value)โโ ejecuta el JavaLa funciรณn del script muestra el nombre cada vez que se escribe una tecla en el cuadro de texto. Esta funciรณn se denomina autocompletar.
Paso 2) Crear la pรกgina de marcos
marcos.php
<?php $frameworks = array("CodeIgniter","Zend Framework","Cake PHP","Kohana") ; $name = $_GET["name"]; if (strlen($name) > 0) { $match = ""; for ($i = 0; $i < count($frameworks); $i++) { if (strtolower($name) == strtolower(substr($frameworks[$i], 0, strlen($name)))) { if ($match == "") { $match = $frameworks[$i]; } else { $match = $match . " , " . $frameworks[$i]; } } } } echo ($match == "") ? 'no match found' : $match; ?>
Paso 3) Crear el script JS
auto_completar.js
function showName(str){ if (str.length == 0){ // exit function if nothing has been typed in the textbox document.getElementById("txtName").innerHTML=""; // clear previous results return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ document.getElementById("txtName").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","frameworks.php?name="+str,true); xmlhttp.send(); }
AQUร,
- La instrucciรณn โif (str.length == 0)โ comprueba la longitud de la cadena. Si es 0, el resto del script no se ejecuta.
- โif (window.XMLHttpRequest)โฆโ Las versiones 5 y 6 de Internet Explorer utilizan ActiveXObject para la implementaciรณn de AJAX. Otras versiones y navegadores como Chrome y Firefox Utilice XMLHttpRequest. Este cรณdigo garantiza que nuestra aplicaciรณn funcione tanto en IE 5 y 6 como en navegadores modernos.
- โxmlhttp.onreadystatechange=functionโฆโ comprueba si la interacciรณn AJAX se ha completado y el estado es 200, y luego actualiza el span txtName con los resultados devueltos.
Paso 4) Probar nuestra aplicaciรณn PHP Ajax
Suponiendo que haya guardado el archivo index.php en phptuts/ajax, navegue hasta el URL http://localhost/phptuts/ajax/index.php
Escribe la letra C en el cuadro de texto. Obtendrรกs los siguientes resultados.
El ejemplo anterior demuestra el concepto de AJAX y cรณmo puede ayudarnos a crear aplicaciones interactivas y completas.
AJAX moderno con la API Fetch
El objeto XMLHttpRequest mencionado anteriormente sigue funcionando, pero su rama ActiveXObject para versiones antiguas de Internet Explorer ya no es necesaria. Los navegadores modernos ofrecen la API Fetch basada en promesas, que realiza la misma solicitud con mucho menos cรณdigo.
function showName(str) { if (str.length === 0) { document.getElementById("txtName").innerHTML = ""; return; } fetch("frameworks.php?name=" + encodeURIComponent(str)) .then(response => response.text()) .then(text => { document.getElementById("txtName").innerHTML = text; }); }
Esta versiรณn realiza la misma funciรณn: envรญa el texto introducido a frameworks.php y coloca la respuesta en el elemento span txtName. Ademรกs, utiliza encodeURIComponent para escapar la entrada de forma segura, y su cadena de promesas se puede ampliar fรกcilmente con manejo de errores mediante un bloque catch.


