Principalmente, utilizo esta aplicación para subir archivos al servidor, por lo que es de mucha ayuda que la lista se actualice con los archivos ya subidos... el problema es que sólo lo hace en Firefox. Ni Opera ni Internet explorer lo hacen bien, sino a medias; cuando entro por primera vez en la página, con la caché de ambos exploradores limpia, la lista carga perfectamente, pero en cuanto subo un archivo, la lista se "refresca", pero sigue mostrando los mismos archivos (que en el caso de que no haya nada, muestra eso: nada). El caso es que los archivos sí se quedan subidos en el servidor correctamente.
Buscando las posibles causas, ha resultado ser la más obvia: el código genera un archivo "xml" llamado "lista.php", que el navegador almacena en la caché. El problema es que, una vez lo almacena, no lo renueva cada vez que se sube un archivo (imagino que porque la diferencia entre la "lista.php" antes de subir un archivo, y despues, es tan pequeña, de apenas unos bytes, que el navegador interpreta que es el mismo archivo, y por lo tanto usa el de la caché). Sé que ese es el problema, porque he borrado manualmente sólo el archivo "lista.php" de los archivos temporales, tanto de opera como de internet explorer, y en ese momento sí que actualiza bien el datagrid.
El caso es que he intentado modificar el nombre del archivo, cada vez que se hace el "makelist", de forma que éste siempre sea distinto y siempre se cargue bien, de la siguiente forma:
list_xml.load(path+"/lista.php"); -> (esta es la línea donde lee el lista.php del servidor). Le he añadido la extensión que se utiliza para burlar la caché en html: ?id=random(1000), quedando el código así:
list_xml.load(path+"/lista.php?id=random(1000)"); -> todo sigue funcionando corréctamente, y también el navegador sigue sin actualizar corréctamente la lista de archivos (el datagrid).
Mi pregunta es: ¿cómo puedo hacer que el nombre cambie cada vez que genera la lista.php (que en realidad es un xml)? He dado por hecho que el nombre, lo coge del "lista.php", de ahí que haya intentado cambiar ese nombre de forma aleatoria.
También he probado a hacer esto: list_xml.load(path+"/lista.php"+(random(1000))); con el problema de que, obviamente, no encuentra el archivo en el servidor, por lo que entiendo que el nombre para el xml que guarda el navegador, se genera en otra parte del código. El problema, es que no se cual es
Espero vuestra ayuda, y de paso que le sirva a quienes les pase lo mismo. ¡Un saludo!
