Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/07/2005, 16:22
Avatar de caricatos
caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola:

Ya funciona correctamente, y creo que es bueno tomar nota del error. Se trata de el uso de bucles con números recibidos como texto...
Cada una de las capas recibe un valor inicial y otro final, que en el caso de un bucle, se puede resolver con indices de menor a mayor(por ejemplo "0"-"29"), pero "90"-"119" no cuela y para solucionarlo tan solo debe convertirse a números [parseInt("90") y parseInt("119")]

Bueno, desglosaré un poco el paso a paso de la migración.

Resulta que el fichero de la galería (fotos.js) consta de 2 tipos de líneas:
Código:
var galeria = new Array();
y
Código:
galeria[0] = new Foto('fotos/20040000.jpg', '360x480', '10/1/2004', 'Skateboard', 'ef=1,risas=1,env=1');
Mi primer reto, era conseguir saber el tamaño del array galeria y pensé que leyendo línea a línea el fichero y por cada línea hacer un explode (php) sobre las comillas:

Código:
<?php
header('Content-Type: text/xml');
?>
<?php
function total() {
$lineas = file("fotos.js");
$n = count($lineas);
for ($i = 0, $j = 0; $i < $n; $i ++)	{
	$resultado = explode("'", $lineas[$i]);
	if (count($resultado) > 1)	{
		$j++;
	}
}
return "<pepe><total>$j</total></pepe>";
}

echo '<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>';

echo total();
?>
Y se puede ver como será el fichero xml resultante:

AjaxFotos.php:
Código:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?> 
<pepe>
<total>469</total> 
</pepe>
Las peticiones javascript se hacen con esta función:

Código:
function pedirXML(sitio, respuesta)	{
	if (window.XMLHttpRequest)	{
		pedido = new XMLHttpRequest();
		pedido.onreadystatechange = respuesta;
		pedido.open("GET", sitio, true);
		pedido.send(null);
	}
	else
		if (window.ActiveXObject)	{
			pedido = new ActiveXObject("Microsoft.XMLHTTP");
			if (pedido)	{
				pedido.onreadystatechange = respuesta;
				pedido.open("GET", sitio, true);
				pedido.send();
			}
		}
}
Y para esta primera petición es:
Código:
pedirXML("AjaxFotos.php", respuestaXMLNFotos);
y la función respuestaXMLNFotos:

Código:
function respuestaXMLNFotos()	{// 
	if (pedido.readyState == 4)	{
		if (pedido.status == 200)	{
			datoTraido = pedido.responseXML.documentElement;
			// éxito: damos valores en blanco al array galería para mostrar luego
			tamGaleria = parseInt(datoTraido.getElementsByTagName('total')[0].firstChild.data);
			//alert(tamGaleria);
			for (var i = 0; i < tamGaleria; i ++)
				galeria[i] = new Foto("", "", "", "", "");
			
			// Buscamos fechas para el menu... y Escribimos las páginas:

			// La petición será:
			var pedir = "AjaxBuscarFechas.php?rango=" + tamPagina;
			// se debe mostrar la última capa
			irCapa = ncapas - 1;
			// la respuesta será procesada por respuestaXMLNRango() 
			pedirXML(pedir, respuestaXMLFechas);
		}
		else	{
			alert("error\n" + pedido.statusText);
		}
	}
}
A partir de aquí se hace la siguiente petición para preparar el menú...
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo