Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 16 Febrero 2019, 13:44 pm



Título: [Pregunta]: No funciona salto de línea en JAVACRIPT (+PHP)
Publicado por: Leguim en 16 Febrero 2019, 13:44 pm
Buenos días!
Me encontré con el siguiente problema y es que javascript no logra detectar los saltos de líneas de una variable o dato de PHP.

Explicando en que consiste el programa les podría decir que tengo una tabla en PHP donde se guarda el contenido de algo, va a almacenar un STRING luego al hacer click en un botón por ej, (Ver contenido)  va a mostrar dicho contenido, estaria enviando un parametro como el siguiente.

Código
  1. <?php
  2. $contenido = 'Este es el contenido'; // El dato lo tengo en la base de datos, no es una variable como esta.
  3.  
  4. ?>
  5. <button type="button" onclick="Mostrar_Contenido('<?php echo $contenido; ?>')">ver contenido</button>
  6.  

Basicamente al hacer esto JS me interpreta el código muy mal, es como que los saltos de línea dieran error,  busque y existen varias soluciones de las cuales intente pero sigue igual que antes.

El error que arroja es "invalid or unexpected token"

El dato original es 'fakdfj aksdjf askdjf askjdf ajsdkfasdkf asdjfasdfasdfaskdf asdkjf asdfasdfasdfasdjfka kqe WJKQWA RJKA JRKAW RAKWJ RAW jkads afksjdfaskdf jasdfka sdfjasdfkasjdfasdjkg asdk faskdjfa sdfkja dfja ksfajsdfasdfasdf fajksdf kajdsf akjsdf aksjdf ajkwrawqjka kjd \r\n\\n\r\nakjsdfa skdf jkasdfkasdfjkasd fkasdj faksdfafd ABC'

El código funciona correctamente ya que probé otros datos de tipo STRING que no tengan salto de línea y funciona bien.
Gracias desde ya!

ACTUALIZACIÓN:
Quizá esto les ayude a entender un poco mas el problema, como pueden ver acá en este STRING existen saltos de lineas y miren lo que pasan con el código JS

(http://subirimagen.me/uploads/20190216070251.png)


Título: Re: [Pregunta]: No funciona salto de línea en JAVACRIPT (+PHP)
Publicado por: EdePC en 16 Febrero 2019, 17:36 pm
Saludos,

- Intenta escapando el salto de línea antes de pasárselo al javascript:

Código
  1. <button type="button" onclick="Mostrar_Contenido('<?php echo str_replace("\n","\\n",$contenido); ?>')">ver contenido</button>

- Fuente: https://stackoverflow.com/questions/13709517/escaping-line-break-endline-from-php-variable-for-javascript-usage


Título: Re: [Pregunta]: No funciona salto de línea en JAVACRIPT (+PHP)
Publicado por: Leguim en 16 Febrero 2019, 18:16 pm
Saludos,

- Intenta escapando el salto de línea antes de pasárselo al javascript:

Código
  1. <button type="button" onclick="Mostrar_Contenido('<?php echo str_replace("\n","\\n",$contenido); ?>')">ver contenido</button>

- Fuente: https://stackoverflow.com/questions/13709517/escaping-line-break-endline-from-php-variable-for-javascript-usage

Gracias por contestar Ede! No me funciono el código sigue igual, para ver si el error venia de otro lado probé con el código que les mostre de ejemplo pero tampoco funciono. Lo dejó acá

Código
  1. <?php
  2. $variable = 'tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  3. quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  4. consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  5. cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  6. proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
  7. $variable = str_replace("\n","\\n",$variable);
  8. ?>
  9.  
  10. <script type="text/javascript">
  11. alert('<?php echo($variable); ?>');
  12. </script>
  13.  


Título: Re: [Pregunta]: No funciona salto de línea en JAVACRIPT (+PHP)
Publicado por: Leguim en 16 Febrero 2019, 19:06 pm
Ya lo pude solucionar! Gracias igualmente, a casi me olvido acá les dejo el código ya solucionado por si a alguien mas le pasa esto, para que no tengan dolor de cabeza tratando de buscar la solución.  ;-)

Código
  1. <?php
  2. $variable = 'tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  3. quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  4. consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  5. cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  6. proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';
  7. $variable = str_replace("\r\n","\\r\\n",$variable);
  8. ?>
  9.  
  10. <script type="text/javascript">
  11. alert('<?php echo($variable); ?>');
  12. </script>
  13.