Foros del Web » Programando para Internet » PHP »

Llamar funciones javascript desde PHP

Estas en el tema de Llamar funciones javascript desde PHP en el foro de PHP en Foros del Web. hola todos! Bueno tengo un nuevo problema. Estoy llamando una funcion javascript desde php y tengo algunos problemas ya que la funcion javascript comparte variables ...
  #1 (permalink)  
Antiguo 28/10/2011, 04:40
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 0
Llamar funciones javascript desde PHP

hola todos!

Bueno tengo un nuevo problema. Estoy llamando una funcion javascript desde php y tengo algunos problemas ya que la funcion javascript comparte variables con otra funcion y por tanto esas variables son globales para javascript. Al llamar la funcion desde php me pone que la variable en cuestion no ha sido declarada.
A ver si me puedes ayudar.. o si simplemtne no se puede esto


Código Javascript:
Ver original
  1. <head>
  2. var poly;
  3. var map;
  4.  
  5.       function initialize() {
  6.          
  7.      
  8.        
  9.         map = nuevo_mapa("Una funcion de google map apis")
  10.      
  11.      
  12.          poly = new google.maps.Polyline(polyOptions);
  13.          poly.setMap(map);
  14.          
  15.       }
  16.      
  17.      
  18.      
  19.       function addRuta(lnt,lng){
  20.        
  21.  
  22.           var punto=new google.maps.LatLng(lnt,lng);  
  23.           var path = poly.getPath();
  24.           path.push(punto);
  25.          
  26.           var marker = new google.maps.Marker({
  27.             position: punto,
  28.             map: map,
  29.             });
  30.        
  31.      map.setCenter(punto);
  32.       }

Código HTML:
Ver original
  1. </head>
  2. <body onLoad="initialize()" >
Código PHP:
<?php
    $archivo 
file("historial.txt");
      if (!
$archivo)
      {
      echo 
"<p>No se pudo abrir el archivo.</p>";
      } 
        
$filas=count($archivo);
            
        for(
$i=0;$i<$filas;$i++)
          {
          
$campo=explode(",",$archivo[$i]);
          
$date $campo[0];
          
$time $campo[1];
          
$lnt $campo[2];
          
$lng $campo[3];
         echo 
"<script type='text/javascript'>"
            echo 
"addRuta(".$lnt.",".$lng.")";  
           echo 
"</script> ";
            
?>
El mapa se inicializa bien por tanto esa funcion toma bien los valores de las variables globales.
Sin embargo la funcion que se llama tantas veces como lineas halla en el fichero de texto no se ejectuta por que segun la consola de errores la variable poly no ha sido declarada.
De verdad agradezco cualquier ayuda!!!
  #2 (permalink)  
Antiguo 28/10/2011, 04:50
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Llamar funciones javascript desde PHP

Curioso...

¿No deberías tener la etiqueta script para el código del principio? (Almenos, para que valide ;) )

El "problema", parece que es el siguiente :)

La función initialize se carga en el "onLoad" (es decir, cuando la pagina esté cargada).

Creo q el proceso de carga sería algo así como
· TU navegador hace la peticion
· Tu servidor devuelve el resultado
· Ejecutas los addRuta (aun no se ha terminado de cargar la pagina)
· Load complete, ejecutas tu initialize


Creo q por ahí va el problema :)

Edit: De ahí a que se cargue el mapa, pero no las rutas (y estas te fallen!). Probablemente, si en el addRuta pones un alert("hola"), verás que te salen los alerts antes de que se cargue, y sabremos si mi teoria es cierta :)
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 28/10/2011, 06:46
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Llamar funciones javascript desde PHP

Hola Eleazan,
pues si, pongo un alerta al inicio de la funcion y si sale antes de que la pagina se cargue completa.
Mi pregunta entonces: Hay alguna forma de esquivar o manejar la temporizacion?.. Es decir puedo hacer que el codigo que llama la funcion esta no funciones sino hasta que se hallan cargado la pagina en su totalidad?
Intente llamar la funcion initialize desde php tb antes que la funcion addRuta, sin embargo tambien ponia que no se habian declarado las mismas variables map y poly.
asi que opte por inicializar en el body. (Aunke para los efectos de mi pagina da igual donde se inicialice)

Última edición por catapelaez84; 28/10/2011 a las 06:48 Razón: Ortografia!
  #4 (permalink)  
Antiguo 30/10/2011, 10:41
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Llamar funciones javascript desde PHP

Yo creo q haria lo siguiente (lo siento, no he tenido internet en todo el finde xD)


· Primero, crear una funcion js que sea dinámica, y lo q haga sea llamar a addRuta varias veces, y segun los parámetros.
· Añadirlo a initialize.

Algo así como

Código PHP:

?> 
<script>
var poly;
var map;
 
      function initialize() {
         
     
       
        map = nuevo_mapa("Una funcion de google map apis")
     
     
         poly = new google.maps.Polyline(polyOptions);
         poly.setMap(map);
         loadRutas();
      }
     
     
     
      function addRuta(lnt,lng){
       
 
          var punto=new google.maps.LatLng(lnt,lng);  
          var path = poly.getPath();
          path.push(punto);
         
          var marker = new google.maps.Marker({
            position: punto,
            map: map,
            });
       
     map.setCenter(punto);
      }

    function loadRutas() {
    <?php echo "addRuta(5,6)"?>
    }
</script>
<?php
Algo así supongo que haría... no sé si entiendes por dónde voy :)
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 30/10/2011, 13:59
 
Fecha de Ingreso: octubre-2011
Mensajes: 153
Antigüedad: 12 años, 5 meses
Puntos: 7
Respuesta: Llamar funciones javascript desde PHP

Asi deberia de funcionar

Código PHP:
Ver original
  1. <?php
  2. echo "
  3. <SCRIPT type='text/javascript'>
  4. mifuncion();
  5. </SCRIPT>";
  6. ?>
__________________
Mi mail: [email protected]
  #6 (permalink)  
Antiguo 30/10/2011, 16:06
Avatar de SetheR  
Fecha de Ingreso: enero-2009
Mensajes: 265
Antigüedad: 15 años, 3 meses
Puntos: 44
Respuesta: Llamar funciones javascript desde PHP

Si no vas a manejar el DOM, puedes sacar la llamada a la funcion initialize() de javascript del evento onload y ejecutarla justo después de declarar las funciones. Tan sólo debes de fijarte que el código PHP escriba en pantalla una vez las funciones a usar se hayan definido, obviamente.

Una solución más elegante sería usar JQuery u otra librería para saber cuando el DOM está cargado, o las funciones definidas para poder ejecutar tu código.

Saludos
  #7 (permalink)  
Antiguo 02/11/2011, 06:25
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Llamar funciones javascript desde PHP

Bueno.. al final opte por la opcion mas sencilla... es decir no llamar la funcion sino utilizar los valores necesarios, meterlos en un vector y pasarlo a javascript y desde javascript meter todo en la misma funcion... Un poco remezclar las cosas, pero igual me funciona a las mil maravillar..Gracias a todos por su granito de arena...

Etiquetas: funciones, javascript, variables
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 10:08.