Incluir un archivo de texto o HTML a través de una llamada a xajax

Valoración del artículo:
Vamos a crear una función xajax que nos muestre el contenido de un archivo de texto o HTML en nuestro archivo .php.
Publicado: 16/4/08
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
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.

Comentarios
Fueron enviados 2 comentarios al artículo
1 comentario no revisado
1 comentario revisado:

fernand...
CODIGO ACTUALIZADO A LA VERSIÓN 0.5 FINAL DE XAJAX
03/7/09
<?

//NOTEN QUE ESTA PARTE HA CAMBIADO CONSIDERABLEMENTE
require('./xajax/xajax_core/xajax.inc.php');
$xajax = new xajax();
$xajax->configure('javascript URI','./xajax');
$xajax->register(XAJAX_FUNCTION, 'anadir_codigo');

function anadir_codigo($archivo, $id){
$respuesta = new xajaxResponse();
$path = $archivo;
$fp = fopen ($path,'r');
$codigo="";
while ($linea = fgets($fp,1024))
{
if ($linea) $codigo .= $linea;
}
fclose($fp);
$res=$codigo;

//anteriormente se usaba AdAssing, eso ya es obsoleto, aquí la nueva forma de realizar la inclusión o solicitar la ejecución de nuestro script.
$respuesta->assign($id,"innerHTML",$res);

return $respuesta;
}

//El objeto xajax tiene que procesar cualquier petición
//tengan cuidado en sus antiguos scripts esta función es importante
$xajax->processRequest();

?>
<html>
<head>
<?php
//Con la siguiente función le decimos a XAJAX que haga todo lo que necesite para crear JAVASCRIPT, también cambio
$xajax->printJavascript();

?>
<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('./tupagina.html', 'mensaje')">aqui</a> nos va cambiar esto por lo que tengamos en el código del archivo que le pasamos.</div>

<div id="midiv">
</div>
</body>
</html>

Manuales relacionados
Categorias relacionadas
El autor
Últimas noticias
Alojados en el grupo