> Manuales > Trabajo con Ajax en PHP utilizando Xajax

Vamos a crear una función xajax que nos muestre el contenido de un archivo de texto o HTML en nuestro archivo .php.

Para comenzar, os recuerdo que como en artículos anteriores ya no vamos a poner todos los pasos necesarios para que funcione una función en xajax, si alguien anda un poco perdido en este tema le recomiendo que se lea el artículo Xajax: Ajax para PHP.

Después de este pequeño inciso pasamos directamente a construir la función.

Actualizado: Este script utiliza la versión 0.2.5 de Xajax. Pero podéis ver como pasarlo a la versión 0.5 del framework (que acaba de salir) en Actualización a Xajax 0.5.

La función es bastante sencilla tan solo tenemos que pasarle por parámetro el nombre del archivo y el id de la capa donde queremos colocar el contenido del archivo. De esta forma la cabecera de la función sería algo así.

function anadir_codigo($archivo,$id){

Ahora pasamos a escribir el código de la función:

Para ello lo primero que tenemos que hacer es meter una variable global con la raíz para que busque bien los archivos. Y después tan solo tenemos que abrir el archivo y pasarlo a una variable la cual es el valor devuelto por la función.

global $raiz;
   $respuesta = new xajaxResponse('ISO-8859-1');
   $path = $raiz . $archivo;
   $fp = fopen ($path,'r');
   $codigo="";
   while ($linea = fgets($fp,1024))
   {
      if ($linea) $codigo .= $linea;
   }
   fclose($fp);
   //$codigo=htmlspecialchars($codigo);
   //$codigo=htmlentities($codigo);
   
      //$codigo=str_replace(">",">",$codigo);
   $res=$codigo;
   //echo $res;
   $respuesta->addAssign($id,"innerHTML",$res);
   //echo $res;
   return $respuesta;   


De esta forma tenemos la función xajax creada. Ya solo nos queda incluirla en un contexto para que veáis como funciona.

Para ello vamos a crear un archivo de ejemplo. Dejo el código completo y a continuación lo explicamos.

<?
$raiz = "../../../"; //empieza en . termina en /
//include ("../librerias/principales.php");
require ($raiz. 'xajax/xajax.inc.php');
//instanciamos el objeto de la clase xajax
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->decodeUTF8InputOn();

function anadir_codigo($archivo,$id){
global $raiz;
   $respuesta = new xajaxResponse('ISO-8859-1');
   $path = $raiz . $archivo;
   $fp = fopen ($path,'r');
   $codigo="";
   while ($linea = fgets($fp,1024))
   {
      if ($linea) $codigo .= $linea;
   }
   fclose($fp);
   $res=$codigo;
   $respuesta->addAssign($id,"innerHTML",$res);
   
   return $respuesta;   
}
//registramos la función creada anteriormente al objeto xajax
$xajax->registerFunction("anadir_codigo");

//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequests();

$xajax->printJavascript($raiz . "xajax/");
?>
<html>
<head>
<script>
function llamar_codigo(archivo,id_capa){
         xajax_anadir_codigo(archivo,id_capa)
                  
   }

</script>
</head>
<body>
<div id="mensaje">Si pulsamos <a href="javascript:llamar_codigo('articulos/ejemplos/ajax/codigo_formulario.html', 'mensaje')">aqui</a> nos va cambiar esto por lo que tengamos en el código del archivo que le pasamos.</div>
</body>


Lo único que hemos construido aquí es crear un archivo donde hemos colocado la función xajax y la hemos llamado desde un simple div para sustituir el texto por un pequeño formulario.

El código que contiene el archivo código_formulario.html es el siguiente:

<form action="#" method="post">
   <input type="text" name="nombre" value="nombre">
   <input type="submit" name="enviar" value="enviar">
</form>


Como podéis comprobar es muy sencillito pero resulta realmente útil a la hora de crear nuestras páginas web.

Os dejo un link al ejemplo funcionando.

Sara Alvarez

Equipo DesarrolloWeb.com

Manual