Foros del Web » Programando para Internet » Javascript »

Se me ejectua el script al cargar la pagina!!!

Estas en el tema de Se me ejectua el script al cargar la pagina!!! en el foro de Javascript en Foros del Web. Hola a todos necesito saber que puedo estar haciendo mal. El problema es que se me esta ejecutando una funcion script sin haberla llamado, es ...
  #1 (permalink)  
Antiguo 27/01/2011, 11:13
Avatar de shaelito  
Fecha de Ingreso: septiembre-2009
Mensajes: 36
Antigüedad: 14 años, 7 meses
Puntos: 0
Se me ejectua el script al cargar la pagina!!!

Hola a todos necesito saber que puedo estar haciendo mal. El problema es que se me esta ejecutando una funcion script sin haberla llamado, es decir al cargar la pagina y no quiero que pase esto, el script lo tengo en la etiqueta head por lo que no se porque pasa eso, si tiene que ver con quue tengo codigo php dentro o algo, por favor si alguien sabe me serviria de mucho la aclaracion, aqui les posteo el script para que lo vean:


<script>
function poner_direccion(){
if (formulario.select_empresa.value != ""){
<?php
$sql = "select * from empresas";
$result = mysql_query($sql) or die(mysql_error());
$num = mysql_num_rows($result);
$i = 0; //lo utilizo de contador
while ($i < $num) {
$nombre = mysql_result($result, $i, "nombre");
if ($nombre == $_SESSION['select_empresa'])
{
$_SESSION['direccion']= mysql_result($result, $i, "direccion");

}
$i++;
}
?>
formulario.direccion.value = <?php echo $_SESSION['direccion'];?>;
}
}
</script>
  #2 (permalink)  
Antiguo 27/01/2011, 11:28
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Se me ejectua el script al cargar la pagina!!!

PHP se ejecuta en el servidor ANTES de que se vea la pagina y las funciones de javascript en el cliente, no puedes usarlos al revés, o sea usar javascript para llamar a funciones PHP a no ser que uses AJAX.

por lo que se ve en tu código quieres que al poner un texto y presionar un botón este ejecute una sentencia mysql siempre que exista, lamentablemente, esto no se puede asi, tienes 3 alternativas:

1.- Enviar la respuesta como variable POST enviándolo a la misma pagina, esto hace que la pagina se recargue y supongo que es esto lo que quieres evitar.

2.- Enviar la respuesta a un iframe, esto es útil para evitar la recarga de toda la página :)

3.- Usar AJAX, y si se que da miedo pero es la mejor forma de hacerlo XD
  #3 (permalink)  
Antiguo 27/01/2011, 11:34
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 19 años, 1 mes
Puntos: 37
Respuesta: Se me ejectua el script al cargar la pagina!!!

Lo que pasa es que JS y PHP viven en lugares y tiempos distintos, uno lo procesa el server y el otro el clietne.
en este script siempre te va a crear la sesión
y posteriormete al llamar la funcion poner_direccion() va a asignar el valor a el formulario, un detalle formulario.select_empresa.value necesitas en tu forma poner onsubmit(this) y recibir el parametro en la función o asignarlo mediante un id document.getElementById("formulario").select_empre sa.value
por el código parece que lo quieres al revés, eso lo puedes hacer con ajax o en su defecto enviar la solicitud para que la procese php y te regrese el resultado.

Saludos.

Última edición por goteen_mx; 27/01/2011 a las 11:35 Razón: Ups, me ganaron la respuesta, eso para por pensar tanto que responder. jejejejeje
  #4 (permalink)  
Antiguo 27/01/2011, 11:46
Avatar de shaelito  
Fecha de Ingreso: septiembre-2009
Mensajes: 36
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Se me ejectua el script al cargar la pagina!!!

gracias por la prontitud de las respuestas, ya me imaginaba que no podia hacerlo asi, me voy por el ajax aunque tengo que estudiarlo mejor porque no lo domino bien pero ya es hora que empiece a conocerlo a fondo. Ya pueden cerrar el tema

Etiquetas: Ninguno
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 02:36.