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.


