Imaginemos que tengo un DIV donde a traves de una sentencia xajax introduzco una imagen. ¿Se puede actualizar de manera automática cada x segundos para ir cambiando de imagen?
A mí se me ocurre el siguiente modo, pero no me gusta:
Teniendo 3 imágenes que se llamen
- img1.jpg
- img2.jpg
- img3.jpg
Lo que menos me importa es el número de imágenes o como se llamen, pueden tener nombres completamente aleatorios, los pongo así para el ejemplo.
Código PHP:
<?php
//Inclusión de la clase Xajax
require('xajax/xajax.inc.php');
//Instancia del objeto de la clase xajax:
$xajax = new xajax();
// FUNCION MOSTRAR
function mostrar($pos){
if(!($pos==0)){
sleep(5); //Se duerme 5 segundos
}else{
$pos = 1;
}
if($pos==3){
$next = 1;
}else{
$next=$pos+1;
}
$salida = "<img src='img".$pos.".jpg' onload='xajax_mostrar(\"" .$next. "\")'/>";
//Instanciamos el objeto para generar la respuesta con Xajax
$respuesta = new xajaxResponse();
//Escribimos en la capa con id='cuadro_foto' el texto que aparece en $cuadro
$respuesta->addAssign('cuadro_foto','innerHTML',$salida);
//Tenemos que devolver la instancia del objeto xajaxResponse
return $respuesta;
}
//Asociamos la función creada anteriormente al objeto xajax
$xajax->registerFunction('mostrar');
//=========================================================================
//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequests(); //Esto sólo se pone una vez por documento
?>
<html>
<head>
<?
//En el <head> indicamos al objeto xajax que se encargue de generar el javascript necesario
$xajax->printJavascript('xajax/');
?>
</head>
<body>
<div id='cuadro_foto'></div>
<script>
xajax_mostrar('0');
</script>
</body>
</html>
Digo que no me gusta porque si lo probáis podréis comprobar que aparece un reloj en el puntero mientras funciona el comando
y además a veces da un error interno de servidor que no entiendo.
También se me ha ocurrido que igual se puede utilizar una animación GIF como temporizador, y que cuando llegue a su fin xajax funcione, pero no sé qué tipo de evento enlazaría eso.
¿Me podéis echar un cable?
¡Saludos!