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, asรญncrono JavaMediante scripts y XML, se actualiza parte de una pรกgina intercambiando datos con el servidor sin necesidad de una recarga completa.
  • โšก Por quรฉ usarlo: Ajax permite funciones avanzadas, similares a las de un ordenador de escritorio, como el autocompletado, la validaciรณn en tiempo real y los menรบs desplegables dependientes.
  • ๐Ÿ–ฅ๏ธ Cliente y servidor: JavaEl script se ejecuta en el navegador y llama a un script PHP, que devuelve รบnicamente los datos necesarios para actualizar la pรกgina.
  • ๐Ÿ” Bรบsqueda en vivo: Un controlador onkeyup envรญa cada pulsaciรณn de tecla a un script PHP que devuelve instantรกneamente los nombres de los frameworks coincidentes.
  • ๐Ÿ“œ Solicitud XMLHttp: El mรฉtodo clรกsico crea un objeto XMLHttpRequest y lee responseText cuando la solicitud se completa.
  • ๐Ÿ†• Obtener API: El cรณdigo moderno reemplaza XMLHttpRequest con la funciรณn fetch basada en promesas para obtener solicitudes mรกs limpias y legibles.
  • ๐Ÿค– Asistencia de IA: Las herramientas de IA pueden convertir el cรณdigo XMLHttpRequest antiguo a fetch o axios y ayudar a depurar las solicitudes Ajax que fallan.

PHP Ajax

ยฟ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

Probando nuestra aplicaciรณn PHP Ajax

Escribe la letra C en el cuadro de texto. Obtendrรกs los siguientes resultados.

Probando nuestra aplicaciรณn PHP Ajax

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.

Preguntas Frecuentes

Una solicitud sรญncrona bloquea el navegador hasta que el servidor responde, congelando la pรกgina. Una solicitud asรญncrona se ejecuta en segundo plano, por lo que la pรกgina permanece receptiva y se actualiza cuando llegan los datos. Ajax utiliza el modelo asรญncrono.

Con fetch, pasa un segundo argumento que establece el mรฉtodo para POST y un cuerpo, luego lee $_POST en PHP. Con XMLHttpRequest, llama a open('POST', url), establece el encabezado Content-Type y envรญa los datos codificados.

CORS, Intercambio de recursos de origen cruzado, bloquea las solicitudes del navegador a un dominio diferente a menos que ese servidor envรญe el encabezado Access-Control-Allow-Origin correcto. Agregue el encabezado en el lado de PHP o llame a un mismo origen. URL arreglarlo.

Sรญ. Pega el cรณdigo XMLHttpRequest y la IA podrรก reescribirlo usando la API fetch basada en promesas o axios, aรฑadir manejo de errores y mantener el mismo comportamiento. Prueba el resultado, ya que el manejo de la respuesta difiere ligeramente.

Sรญ. Comparta el cรณdigo de solicitud y el error de la consola del navegador o de la red, y la IA podrรก detectar un error. URL, un bloqueo CORS, un parรกmetro faltante o un error del servidor, luego sugiera la soluciรณn a intentar.

Resumir este post con: