Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: santizuche en 10 Diciembre 2015, 03:55 am



Título: [Resuelto] Actualizar .TXT y mostrar en web(html) sin refrescar(F5)?
Publicado por: santizuche en 10 Diciembre 2015, 03:55 am
Hola a todos, gracias por pasar e intentar ayudar.
Bueno como el titulo indica tengo un txt alojado en un servidor externo que se va a ir actualizando y subiendo. Pongamosle "https://www.servidor.com/datos.txt", aquí esta el txt que tengo que leer que contiene lo siguiente:

=====  datos.txt  =====
Código:
var1="0001A034D";
"var1" es una variable de
javascript.
=================

Por otro lado tengo un HTML local, el cual puede tener funciones tanto PHP, javascript, jquery, AJAX lo que se necesite para resolver este problema. Pero es preferible que no sea PHP.

Yo para tengo armado esto:

Código:
<!doctype html>
<html>
<head>
<title>Base de datos</title>
<script src='js/jquery.min.js'></script>
<script>var var1 = "No se encontro el archivo";</script>
<script src="https://www.servidor.com/datos.txt"></script>
<script>
$(function(){
document.getElementById("Representar").innerHTML = var1;
});
</script>
</head>


<body>
Interior del archivo:
<div id="Representar"></div>
</body>
</html>

Pero no sirve ya que modifico el archivo TXT y para visualizar en el HTML el nuevo contenido requiero refrescar la web y lo que busco es que no se tenga que refrescar, sino que pasen 10 segundos o  detecte que se modifico el archivo y se vuelva a cargar solo el archivo y actualice el contenido del div sin tener que refrescar toda la web completa.

Muchas gracias por su atención. Saludos a todos :D


Título: Re: Actualizar .TXT y mostrar en web(html) sin refrescar(F5)?
Publicado por: WHK en 10 Diciembre 2015, 17:53 pm
Pues claro que no porque el documento es txt y no javascript, para eso el archivo debe llamarse datos.js y las lineas de los datos debes comentarlos con doble slash (//).

Con respecto a la actualización de contenido es un poco mas complejo porque necesitas tener muchas cosas en cuenta:
1. Para tu facilidad utiliza jquery y haz una peticion GET simple al txt, le sacas los datos y luego lo procesas con la función eval() el cual interpretará tu variable.
2. Cuando se produce un error de conexión cuando no hay internet, cuando la conexión se interrumpe o cuando el archivo no está entonces el código debe esperar unos 5 segundos antes de volver a reintentar.
3. Cuando se obtiene el archivo y se actualiza la pagina web debes esperar 5 segundos mas y volver a repetir la misma acción.

Ahora, lo otro que puedes hacer para que sea mucho mas facil es ponerle una meta etiqueta al código html para que la pagina se refresque sola cada 5 segundos, como por ejemplo:
Código:
<meta http-equiv="refresh" content="5">

Ahora, te recomiendo que sea cada 15 segundos para no sobrecargar el servidor.

Fuera de todo esto mi opinion personal es que el modelo de tu sitio web está mal hecho, primeramente porque no es bueno utilizar archivos txt para cargar scripts de javascript ni si quiera parsearlos porque:

1. Puede ser susceptible a agujeros de seguridad
2. No es estandar ni escalable, es poco serio y mal visto
3. El navegador tiene que cargar el texto y parsearlo como txt y luego parsear un trozo en javascript haciendo que el navegador trabaje el doble

Lo que yo haría en tu caso si necesitas que un sitio se actualice solo es utilizar un archivo de tipo json para el contenido que quieres mostrar y desde jquery utilizar una solicitud ajax sin caché, tomar el contenido y actualizarlo dentro del sitio, pero esto requiere crear los controles del sitio dentro de tu código javascript ya que en el archivo json solo hay datos haciendo mas rápida la transferencia y haciendolo mas estandar.

Dale un vistazo a esto:
http://api.jquery.com/jquery.getjson/

Saludos.


Título: Re: Actualizar .TXT y mostrar en web(html) sin refrescar(F5)?
Publicado por: santizuche en 13 Diciembre 2015, 05:43 am
Gracias por responder y por los consejos. Voy a investigar un poco más el asunto. Cualquier cosa la público como respuesta.
Saludos