Retornar parámetros mediante echo de php.

$Criterio=$Criterio . "<img src='" . $carpetaTuneadas . "/" . $fichero . "'" .
" title='" . $title . "'".
" onmouseover='javascript:alert('hola');'" .
" width='50px'" .
"/>";

Buenos días.

Te explico: desde el servidor php, retorno la secuencia anterior mediante un echo ... El tema es que cuando el ratón pase por encima de la imagen, debe ejecutarse una función determinada, pero resulta que si esa función tiene parámetros no se ejecuta. Para hacer pruebas lo he probado con la función alert y resulta que tampoco funciona. He cambiado las comillas del parámetro por comillas dobles, con la barra invertida y nada, sigue sin salir ... ¿se te ocurre algo?

2 respuestas

Respuesta
1

Te has fijado en como queda cuando ejecuta la página para ver el javascript que generas ¿?

Si. Queda bien ...

Lo único es que, vamos a ver, hay una cosa mas .... :

Desde el servidor php se genera un script (javascript), el código que te he pasado se retorna de la siguiente manera:

echo "document.getElementById(\"divTuneadas\").innerHTML=\"" . $Criterio . "\"";

posteriormente se cierra el script con : echo "</script>";

Esto lo que hace es en el "div" que se indica insertar todas las imágenes contenidas en "criterio", funciona, y funciona bien, pero cuando a la función que quieres llamar le pasas parámetros no funciona, se siguen viendo las imágenes pero no surte efecto la función que quieres llamar.

Por que no obtienes por pantalla las dos opciones, cuando mandas parámetros y cuando no, para ver como se genera.. ¿te da error de Javascript?

No, no da ningún tipo de error. La página funciona bien pero sin esa funcionalidad ...

No me he explicado bien, me refería a que miraras el código y lo revisaras a ver si habían errores de Javascript. Esto no se parece a lo del principio, usas innerHTML y antes era el alert...¿?

El código es correcto. No sé lo que puede ser ...

Si, es lo mismo utilice o no el innerHTML, con solo lo del principio lo retornaría en el sitio desde donde se llamase a ese procedimiento a php, sin embargo, con el innerHTML, lo único que hace es ubicarlo donde quiero desde el script que genero desde php, el código "<img>" es el mismo.

Si estás tan seguro de que el código es correcto, entonces no se que puede ser, si no lo veo, no te puedo decir mucho mas... la verdad!. Sé para que vale el innerHTML, pero deberías de probar alguna función mas obvia o simplificar tu función, comprobar si los parámetros le llegan bien... en definitiva, MOSTRAR EL JAVASCRIPT POR PANTALLA y ver si hay errores.

Desde aquí y con estas circunstancias no puedo hacer mas, si eres tan amable de cerrame la pregunta te lo agradecería

;-)

Respuesta
1

Intenta ponerlo de esta manera recién lo coloque y me funciono

$Criterio=$Criterio . "<img src='" . $carpetaTuneadas . "/" . $fichero . "'" .
" title='" . $title . "'".
" onmouseover='alert(\"hola\");'" .
" width='50px'" .
"/>";

Lo que aquí paso es que como dentro de las comillas dobles pones comilla simple no hay problema no te marca error pero vamos a pensar como lo escribe php en el html si tu pones

echo ("<img src='imagen.jpg>");

lo pondrá como

<img src='imagen.jpg'>

ahora bien agreguemos un alert al evento onmouseover

En php lo pones así pero de una vez omitimos la palabra javascript ya que no es necesaria

echo ("<img src='imagen.jpg' onmouseover='alert('hola');'>");

php lo escribira en html como :

<img src='imagen.jpg' onmouseover='alert('hola');'>

onmouseover='alert('hola');'<<<---- ahi esta el error

Estamos interrumpiendo una cadena con otra la solucion que te propongo unas lineas arriba es utilizar justamente una interrupcion pero controlada con diagonal inversa y comillas dobles

='alert(\"hola\");

y con esto ya funciona

Si, es cierto era eso.

Lo que hice, es llevarme todo eso a local, y meterlo en el innerHTML (eso no te lo había dicho), y cambiando lo que has dicho me funcionó. Ahora cuando he recibido tu contestación lo estaba probando desde el servidor php, pero tiene pinta de que vaya a ser eso ...

Te lo explico, en breve, espero.

Bueno, era eso. El error como siempre pasa, no estaba ahí, ya había corregido esa parte, pero falla otra ... y claro te obcecas en algo ...y hasta que te das cuenta ...

Eso que estoy haciendo lo podrás ver en funcionamiento en mi página:

http://imaginis.freei.me/

Se aplicará, cuando se visualiza la foto en grande, en la esquina inferior derecha.

Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas