Ver Mensaje Individual
  #7 (permalink)  
Antiguo 13/12/2011, 13:02
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Javascript imprime variables php con valores que NO corresponden

sigue siendo el mismo proceso. recuerda que siempre debes generar una sintaxis correcta. y para analizarlo, verifica siempre el código fuente que recibe el navegador. todo depende el tipo de dato que tu quieras que javascript reciba.
Código:
<?php
$param = '0';
echo "<element event='handler($param)'>content</element>";
?>
# el navegador lee;
<element event='handler(0)'>content</element>
en ese ejemplo no surge problema. aunque la variable en php es un string, javascript lo ve como numérico. si tu quieres que javascript lo vea como string, entonces siempre debes darle el contenido correcto. tal como el caso anterior, imprimes comillas en ambos lados.

el otro caso común es cuando debes pasarle un string a javascript pero hay conflicto entre las comillas en php. por ejemplo.
Código:
<?php
$param = 'string';
# notese que se utiliza comilla simples para no crear conflicto con las comillas dobles de php;
echo "<element event='handler('$param');'>content</element>";
?>
# el navegador lee;
<element event='handler('string');'>content</element>
¿qué sucedio ahora? que el navegador no puede interpretar el atributo event porque hay conflicto de comillas. de hecho, lo que el navegador ve como valor para el atributo es lo marcado en negrita. por tanto, las comillas para el atributo de handler debes cambiarlo a otro que no sea el mismo utilizado para delimitar el valor del atributo handler. o sea, comilla dobles.

Código:
<?php
$param = 'string';
echo "<element event='handler("$param");'>content</element>";
# error de sintaxis en php
?>
aquí el navegador no ve nada porque ahora hay conflicto de comillas en php. lo marcado en negrita queda fuera del string de php, y por tanto la sintaxis no es correcta. la solución más obvia, es neutralizar (escapar) las comillas dobles para que php las considere de forma literal.

Código:
<?php
$param = 'string';
echo "<element event='handler(\"$param\");'>content</element>";
?>
# el navegador lee
<element event='handler("string");'>content</element>
# php y html felices!
como verás, el problema realmente esta en como manejas php, y estoy seguro que nada tiene que ver con javascript.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 13/12/2011 a las 13:13