Foros del Web » Programando para Internet » Javascript »

Refresco JS - PHP

Estas en el tema de Refresco JS - PHP en el foro de Javascript en Foros del Web. Hola Tengo un problema para refrescar la llámada a un método de JS que via PHP me retorna la hora del servidor. El problema me ...
  #1 (permalink)  
Antiguo 28/04/2009, 05:05
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Refresco JS - PHP

Hola

Tengo un problema para refrescar la llámada a un método de JS que via PHP me retorna la hora del servidor.

El problema me pasa en una aplicación que estoy desarrollando en javascript con google maps. Es bastante grande y aún no está online, así que he hecho una página de test dónde reproduzco la estructura que tengo (con 4 ficheros distintos). En este esqueleto se reproduce exactamente el mismo error que tengo: El problema es que la hora del servidor me aparece correctamente la primera vez, pero cuando via javascript refresco la página (volviendo a llamar a un método de JS que llama al PHP que retorna la hora), la hora no se me actualiza. Imagino que es algun problema con el cache, pero por más que intento que funcione, no lo consigo.

En el siguiente link podeis ver la página:
(Canviad [hxxp] por el típico h t t p : / / y [punto] por '.')
[hxxp]gmapsample[punto]260mb[punto]com/testHora[punto]html

Saludos y gracias.
  #2 (permalink)  
Antiguo 28/04/2009, 05:21
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Refresco JS - PHP

Adjunto el código de testUtils.php

//--------------------------------------------------------------------------
// testUtils.php
//--------------------------------------------------------------------------

//<![CDATA[

TEST_UTILS_PHP = {};

TEST_UTILS_PHP.getServerTime = function () {
// Aunque ponga el header de no-cache, no se refresca la fecha
var currentTime = '<?php print date("F d, Y H:i:s", time())?>';
//var currentTime = '<?php header( "Cache-control: no-cache" ); header( "Expire: -1" ); print date("F d, Y H:i:s", time())?>';
var serverTime = new Date(currentTime);
return serverTime;
}

//]]>
  #3 (permalink)  
Antiguo 28/04/2009, 05:22
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Refresco JS - PHP

Adjunto el código de testUtils.js y testMain.js:


//--------------------------------------------------------------------------
// testMain.js
//--------------------------------------------------------------------------

//<![CDATA[

TEST_MAIN = {};

TEST_MAIN.main = function () {
TEST_MAIN.update();
}

TEST_MAIN.update = function () {
alert( "TEST_MAIN.update" ); // Alert para comprobar que el método se llama OK.
var d = TEST_UTILS.getServerDate();
document.getElementById('horaServidor').innerHTML = d;
setTimeout("TEST_MAIN.update()", 1*60*1000); // Timer 1min
}

//]]>


//--------------------------------------------------------------------------
// testUtils.js
//--------------------------------------------------------------------------

//<![CDATA[

TEST_UTILS = {};

TEST_UTILS.getServerDate = function () {
return TEST_UTILS_PHP.getServerTime();
}

//]]>
  #4 (permalink)  
Antiguo 28/04/2009, 05:22
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Refresco JS - PHP

¿Te has fijado en que el HTML que pones está mal? Y cuando digo mal, no me refiero a que no valide (que no, no valida), si no a cosas muy evidentes: hay cosas fuera del body y hay un tag de cierre </noscript> pero no hay ninguno de apertura...


Por lo demás... El script que has hecho, por ningún lado vuelve a llamar al servidor. Es decir, básicamente lo que haces es esto:

- Cuando se carga la página se crea una variable con la hora del servidor
- Cada minuto mediante Javascript se lee esa variable y se saca en el <div>

Pero por ningún lado tienes nada que "refresque" el contenido de la variable. No estás volviendo a llamar al servidor para que te devuelva una nueva hora.

Última edición por venkman; 28/04/2009 a las 05:28
  #5 (permalink)  
Antiguo 28/04/2009, 05:27
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Refresco JS - PHP

Hola venkman

El </noscript> y lo que hay a continuación lo añade la publicidad de la página gratuita dónde he colgado el link.

El html que tengo (en el servidor de desarollo local hay sólo esto, nada de publicidad) es el siguiente:

<!--
//--------------------------------------------------------------------------
// testHora.html
//--------------------------------------------------------------------------
-->
<html>
<head>
<meta http-equiv="content-type" content="text/html;" charset="ISO-8859-1"/>
<title>TEST HORA SERVIDOR</title>
<script src="./js/testMain.js" type="text/javascript" charset="iso-8859-1"></script>
<script src="./js/testUtils.js" type="text/javascript" charset="iso-8859-1"></script>
<script src="./js/testUtils.php" type="text/javascript" charset="iso-8859-1"></script>
</head>
<body bgcolor="#F7F8F9" onload="TEST_MAIN.main()">
<H1>Hora del Servidor</H1><BR>
<div id="horaServidor"></div>
</body>
</html>

Gracias por la respuesta.
Saludos.
  #6 (permalink)  
Antiguo 28/04/2009, 05:31
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Refresco JS - PHP

Oh... ya veo. No me había fijado que era un servidor gratuito de esos con publicidad.

Con respecto al resto, lo dicho ya arriba.
  #7 (permalink)  
Antiguo 28/04/2009, 05:32
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Refresco JS - PHP

Vuelvo a poner el codigo entreo a continuación, pero de manera ordenada (lo siento, pero me daba errores de permisos para linkks/url y por eso los mensajes anteriores en lugar de ponerlo todo seguido y correcto).

Bàsicamente: html llama a un JS q llama un método q ser fresca cada minuto.
Este JS llama a otoro js q a su vez llama al PHP que da la hora del servidor.

El problema es que l ahora del servidor no se refresca.

Saludos y muchas gracias.

<!--
//--------------------------------------------------------------------------
// testHora.html
//--------------------------------------------------------------------------
-->
<html>
<head>
<meta http-equiv="content-type" content="text/html;" charset="ISO-8859-1"/>
<title>TEST HORA SERVIDOR</title>
<script src="./js/testMain.js" type="text/javascript" charset="iso-8859-1"></script>
<script src="./js/testUtils.js" type="text/javascript" charset="iso-8859-1"></script>
<script src="./js/testUtils.php" type="text/javascript" charset="iso-8859-1"></script>
</head>
<body bgcolor="#F7F8F9" onload="TEST_MAIN.main()">
<H1>Hora del Servidor</H1><BR>
<div id="horaServidor"></div>
</body>
</html>


//--------------------------------------------------------------------------
// testMain.js
//--------------------------------------------------------------------------

//<![CDATA[

TEST_MAIN = {};

TEST_MAIN.main = function () {
TEST_MAIN.update();
}

TEST_MAIN.update = function () {
alert( "TEST_MAIN.update" ); // Alert para comprobar que el método se llama OK.
var d = TEST_UTILS.getServerDate();
document.getElementById('horaServidor').innerHTML = d;
setTimeout("TEST_MAIN.update()", 1*60*1000); // Timer 1min
}

//]]>


//--------------------------------------------------------------------------
// testUtils.js
//--------------------------------------------------------------------------

//<![CDATA[

TEST_UTILS = {};

TEST_UTILS.getServerDate = function () {
return TEST_UTILS_PHP.getServerTime();
}

//]]>


//--------------------------------------------------------------------------
// testUtils.php
//--------------------------------------------------------------------------

//<![CDATA[

TEST_UTILS_PHP = {};

TEST_UTILS_PHP.getServerTime = function () {
// Aunque ponga el header de no-cache, no se refresca la fecha
var currentTime = '<?php print date("F d, Y H:i:s", time())?>';
//var currentTime = '<?php header( "Cache-control: no-cache" ); header( "Expire: -1" ); print date("F d, Y H:i:s", time())?>';
var serverTime = new Date(currentTime);
return serverTime;
}

//]]>
  #8 (permalink)  
Antiguo 28/04/2009, 05:42
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Refresco JS - PHP

magicrat, has leído la contestación que te he dado más arriba? Nada, en tu código, vuelve a llamar al servidor. La hora del servidor sólo se carga una vez y se guarda en la variable serverTime, pero no estás haciendo nada para volver a llamar al servidor.
  #9 (permalink)  
Antiguo 28/04/2009, 06:52
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Refresco JS - PHP

Cita:
Iniciado por venkman Ver Mensaje
magicrat, has leído la contestación que te he dado más arriba? Nada, en tu código, vuelve a llamar al servidor. La hora del servidor sólo se carga una vez y se guarda en la variable serverTime, pero no estás haciendo nada para volver a llamar al servidor.
Perdona Benkman, no habia visto tu mensaje correctamente.

No entiendo lo que dices de que no vuelvo a llamar al servidor. Cómo debo hacerlo?? Si pongo un alert en TEST_UTILS_PHP.getServerTime(), justo dónde hago la llamada al servidor, veo el alert cada vez que refresco la página, por eso creia que llamaba al servidor. Cómo tengo que hacerlo para llamarlo?

Gracias de antemano.
  #10 (permalink)  
Antiguo 28/04/2009, 07:28
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Refresco JS - PHP

¿Qué es lo que sabes de Javascript, PHP, web?

Lo pregunto porque tu aproximación parece un tanto -y no lo digo con mala intención- ingenua. Quiero decir, ¿por qué creías que eso llamaba al servidor cada vez? ¿Porque la función se llama getServerTime(), porque ese script se genera con PHP o por qué?

Y lo pregunto porque dependiendo de lo que realmente sepas, habrá que indicarte una cosa u otra.
  #11 (permalink)  
Antiguo 28/04/2009, 07:34
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Refresco JS - PHP

Cita:
Iniciado por venkman Ver Mensaje
¿Qué es lo que sabes de Javascript, PHP, web?

Lo pregunto porque tu aproximación parece un tanto -y no lo digo con mala intención- ingenua. Quiero decir, ¿por qué creías que eso llamaba al servidor cada vez? ¿Porque la función se llama getServerTime(), porque ese script se genera con PHP o por qué?

Y lo pregunto porque dependiendo de lo que realmente sepas, habrá que indicarte una cosa u otra.
Hola venkman.

Pues no sé demasiado de JS / PHP / WEB, la verdad. Y no me tomo a mal tu pregunta, está claro!
Creía q se llamba cada vez porque cada minuto me aparecia el chivato (alert) q ponia en TEST_UTILS_PHP.getServerTime. Y por tanto, pensava q al asignar a currentTime el codigo PHP, este se ejecutava cada vez.
Ya te digo, no sé demasiado cómo funciona PHP/JS, y aún menos PHP (el lado servidor vamos).

Gracias.
  #12 (permalink)  
Antiguo 28/04/2009, 08:16
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Refresco JS - PHP

Bueno, ahora mismo no tengo a mano ningún enlace, pero te recomiendo que busques por ahí -que hay muchos, muchos- algún tutorial básico de cómo funciona PHP y cómo funciona Javascript.

Es muy extenso para ponerlo aquí, y sobre todo ya hay muchos sitios donde está explicado.

Si puedo más tarde, busco algún enlace. Pero si no, búscalo tú mismo que, como digo, hay muchos.
  #13 (permalink)  
Antiguo 28/04/2009, 08:24
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Refresco JS - PHP

Cita:
Iniciado por venkman Ver Mensaje
Bueno, ahora mismo no tengo a mano ningún enlace, pero te recomiendo que busques por ahí -que hay muchos, muchos- algún tutorial básico de cómo funciona PHP y cómo funciona Javascript.

Es muy extenso para ponerlo aquí, y sobre todo ya hay muchos sitios donde está explicado.

Si puedo más tarde, busco algún enlace. Pero si no, búscalo tú mismo que, como digo, hay muchos.
Grácias vekman.
La verdad es que he buscado cosas y he visto cómo funciona, y aún así estoy un poco bloquedao en este punto, la verdad.

Estoy seguro que no funciona por una tonteria relacionada con cómo estan puestos los ficheros o lo que sea (que la estructura que he pasado está así por que hay mucho código en los dos .js, el .php no tiene de momento nada más que lo que he posteado)

Si tienes algun buen link, te agradeceria me lo pasaras. Vamos, y sy directamente me puedes decir cómo solucionarlo, ya seria impresionante ;)

Muchas gracias por tus respuestas!
  #14 (permalink)  
Antiguo 28/04/2009, 09:03
 
Fecha de Ingreso: abril-2009
Mensajes: 13
Antigüedad: 15 años
Puntos: 0
Respuesta: Refresco JS - PHP

Cita:
Iniciado por venkman Ver Mensaje
Bueno, ahora mismo no tengo a mano ningún enlace, pero te recomiendo que busques por ahí -que hay muchos, muchos- algún tutorial básico de cómo funciona PHP y cómo funciona Javascript.

Es muy extenso para ponerlo aquí, y sobre todo ya hay muchos sitios donde está explicado.

Si puedo más tarde, busco algún enlace. Pero si no, búscalo tú mismo que, como digo, hay muchos.
Bueno, he puesto una solución que temporalmente funciona, pero que no me gusta por que no es lo que quiero. Que he hecho? Modificar testUtils.php para que inicialmente llame al servidor y despues incremente internamente la variable usando Javascript:

//--------------------------------------------------------------------------
// testUtils.php
//--------------------------------------------------------------------------

//<![CDATA[

TEST_UTILS_PHP = {};

TEST_UTILS_PHP.serverTime = null;

TEST_UTILS_PHP.getServerTime = function () {
var currentTime = '<?php print date("F d, Y H:i:s", time()) ?>';
if ( TEST_UTILS_PHP.serverTime == null )
TEST_UTILS_PHP.serverTime = new Date(currentTime);
else
TEST_UTILS_PHP.serverTime.setMinutes( TEST_UTILS_PHP.serverTime.getMinutes()+1);
return TEST_UTILS_PHP.serverTime;
}

//]]>

Porque no me gusta? Pues por que la web donde va este código se refresca cada 5 minutos (no cada minuto), y por que cada carga tarda un poco (1-2 segunods por que hay que parsear varios xml y mostrardatos en google maps). Y por lo tanto no me fio que este incremento interno sea exacto. Preferiria llamar cada vez al servidor via php y poner la hora que me devuelve. Pero de momento me sirve.

Si pudieras decirme cómo tendria que hacerlo para llamar al servidor en cada recarga (o pasrme algun link dónde lo explicara claramente), te lo agradeceria.

Saludos y muchas gracias!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:38.