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ú...