dominios y alojamiento web en hostalia

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

16 de abril de 2008
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.
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.

Compartir en redes sociales

Comentarios
Fueron enviados 6 comentarios al artículo
2 comentarios no revisados
4 comentarios revisados:
Por: juan
20/11/2008
Es posible cargar paginas con ajax que contengan archivos .swf o .flv ? porque el ejemplo me funciona perfecto para formularios o texto, pero no cuando la pagina que incluyo contiene archivos con esos formatos.
Saluods

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

//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>
hay alguna manera que se lea el contenido php
Por: Dragon
16/3/2010
cuando hago la redireccion al div el codigo php sale como texto plano y no tiene efecto hay alguna manera de solucionar esto
Si te sale el código PHP es que estás haciendo algo mal
16/3/2010
El código PHP, como sabes, se procesa en el servidor. si te sale en la página como texto plano es que no está siendo procesado antes de enviar la página al cliente.

De hecho, viendo el código de este ejemplo veo que el archivo se trae como fichero de texto con PHP, es decir, se abre el archivo de texto, independientemente de lo que tenga y se lee el contenido. Si es un código PHP al servidor le da igual, porque lo interpreta como un archivo de texto plano....

Yo te sugiero que, para lo que deseas hacer no utilices este artículo como referencia... lo que quieres hacer todavía es bastante más sencillo de lo que se hace en este artículo y en otros ejemplos del manual de xajax seguramente se vea.

De cualquier forma, en vez de hacer las operaciones de acceso a ficheros para traerte el contenido de tu archivo .php procesado, ¿Por qué no intentas colocar el código PHP que quieres procesar en la propia función xajax?

Manuales relacionados
Categorias relacionadas
El autor
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...