Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Poltergeist

Estas en el tema de Poltergeist en el foro de Javascript en Foros del Web. Hola a todos y gracias anticipadas por la ayuda, os cuento: Tengo una página dentro de la cual tengo un iframe que contiene unas imágenes. ...
  #1 (permalink)  
Antiguo 05/06/2014, 11:01
 
Fecha de Ingreso: noviembre-2013
Mensajes: 10
Antigüedad: 10 años, 5 meses
Puntos: 1
Poltergeist

Hola a todos y gracias anticipadas por la ayuda, os cuento:

Tengo una página dentro de la cual tengo un iframe que contiene unas imágenes. Cuando pulso un botón quiero que se inicie un proceso en javascript que vea que imágenes hay en el iframe y llame a un proceso en php que las guarde en una BD mysql. Lo que he hecho es esto:

HTML:

<a href='#' onclick="grabapresen()" class='sigui2' target="respuesta2"></a>

<iframe name="respuesta2" id="iframe2" hidden ></iframe>

Javascript:
function grabapresen(){
var obj = parent.frames[1].document.getElementById('caja');
var numero = obj.getElementsByTagName('IMG').length;
counter = 0;
if (numero>0){
while (numero>counter){
foto = obj.getElementsByTagName('IMG')[counter];
ruta = foto.src
alert("envio foto: " + ruta)
location.href = "grabapresen.php?ruta="+ruta;
counter=counter+1;}
}else{
alert("No ha añadido imágenes a su presentación todavía");
};
}

PHP: grabapresen.php
?php session_start();?>
<?php include("seguridad.php"); ?>

<?php include("cabecera.php"); ?>
<?php

$user = $_SESSION['usuarioactual'];
$presenta = $_SESSION['presen'];

echo "ruta: " + $_GET["ruta"];

?>

En el php aun no he programado el acceso a la BD porque estaba haciendo pruebas, por eso he puesto el echo, para ver que todo iba correctamente.

Como veis quiero que el resultado del php se cargue en un iframe que está oculto. En principio, parce que lo hace pero acaba cargando una página sin motivo aparente (pongo la foto al final). Incluso si le digo al script de Js que envíe un alert después de cada foto para controlar la ejecución, si tardo un poco en darle a aceptar, ya salta está página que digo de forma automática. No tengo ni idea de por donde pueden ir los tiros. A ver si a alguien se le ocurre algo.

En lugar de la foto de la página os diré que es una página en blanco lo que aparece con la dirección:
http://localhost/grabapresen.php?ruta=http://localhost/images3/categoria1/1.jpg

donde 1.jpg es el nombre de la primera foto que se proceso en el script, y el página, en lugar de aparecer la palabra ruta como indica el cçodigo php, tan solo pone un 0.
  #2 (permalink)  
Antiguo 05/06/2014, 12:17
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Poltergeist

Cita:
Iniciado por davidferquin Ver Mensaje
echo "ruta: " + $_GET["ruta"];
?>

como indica el cçodigo php, tan solo pone un 0.
En PHP se concatena con punto (.), no es con + como en JS
__________________
Salu2!
  #3 (permalink)  
Antiguo 05/06/2014, 12:28
 
Fecha de Ingreso: agosto-2012
Ubicación: Bilbao
Mensajes: 44
Antigüedad: 11 años, 8 meses
Puntos: 2
Respuesta: Poltergeist

Cita:
if (numero>0){
while (numero>counter){
foto = obj.getElementsByTagName('IMG')[counter];
ruta = foto.src
alert("envio foto: " + ruta)
location.href = "grabapresen.php?ruta="+ruta;
counter=counter+1;}
}else{
alert("No ha añadido imágenes a su presentación todavía");
};
}

Esa sección de código te quedaría más limpia con un For

if (numero > 0)
{
for (i=0;i<numero;i++)
{
foto = obj.getElementsByTagName('IMG')[counter];
ruta = foto.src
alert("envio foto: " + ruta)
location.href = "grabapresen.php?ruta="+ruta;
}
}
else
{
alert("No ha añadido imágenes a su presentación todavía");
}

Mi más humilde opinión

Y como te ha dicho italico en Php se concatena con . no con + como en Js
__________________
Bienvenidos a una nueva era.
  #4 (permalink)  
Antiguo 05/06/2014, 13:36
 
Fecha de Ingreso: noviembre-2013
Mensajes: 10
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Poltergeist

Muchas gracias itálico, eso fué un despiste, al andar trabajando con varios lenguajes a la vez...

De todos modos el problema continua, lo que pasa es que al poner el punto en lugar del 0 pone la ruta que es lo que tiene que poner, pero sigue abriendo la máldita página.

Lo que he comprobado es que, detecta la primera foto, pone el alert y es al pasar a la segunda foto y poner el alert, pulse o no aceptar, acaba apareciendo la página, es como si al procesar el php la primera vez, quedase algo pendiente, no sé, porque, de hecho, la ruta que aparece en la dichosa página es la de la primera foto procesada, no la de la última ¿Alguna idea?
  #5 (permalink)  
Antiguo 05/06/2014, 13:37
 
Fecha de Ingreso: noviembre-2013
Mensajes: 10
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Poltergeist

Gracias agami, tienes razón, a veces es mejor pararse un poco más y hacer bien las cosas.
  #6 (permalink)  
Antiguo 06/06/2014, 01:09
 
Fecha de Ingreso: noviembre-2013
Mensajes: 10
Antigüedad: 10 años, 5 meses
Puntos: 1
Solución

Al final lo he resuelto de la forma más simple:

parece que, a pesar de indicar el nombre del iframe dónde quiero que se abra la página con TARGET dentro del html, al pasar el control al JS y de ahí al PHP, se pierde el sentido del TARGET, supongo que será por abrir la página de PHP desde JS, así que he eliminado el TARGET del tag <a> y simplemente utilizando el onclick le digo que ejecute la función de JS grabapresen(), Una vez dentro de la función, ésta abre la página grabapresen.php en el iframe utilizando el siguiente código:

window.open("grabapresen.php?ruta="+ruta, "respuesta2")

donde respuesta2 es el nombre del iframe

Sencillo y rápido, y sin problemas

Gracias por vuestra ayuda

Etiquetas: html, js, php
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 06:57.