Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 2 Noviembre 2020, 20:31 pm



Título: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
Publicado por: Leguim en 2 Noviembre 2020, 20:31 pm
Hola,

bueno quisiera poder convertir un arreglo que tengo definido en php a javascript, esto si ya sé como poder hacerlo pero quiero hacerlo de la siguiente manera:

Código
  1. $array = array('A', 'B', 'C', 'D'); // defino mi arreglo php
  2.  

Código
  1. var array = <?php echo json_encode($array); ?>; // de esta manera voy a estar convirtiendo el arreglo php a un arreglo en javascript
  2.  

Ahora lo que devolverá ese arreglo será..
Código
  1. ["A", "B", "C", "D"]
  2.  

Y yo quiero que no lo haga de esa manera, quiero que lo convierta de esta forma...
Código
  1. ['A', 'B', 'C', 'D']
  2.  

Es posible que no lo hayan notado pero la diferencia está en el uso de las comillas simples en lugar de las comillas dobles que me vienen por defecto, ¿Cómo podría hacer esto? ¿y todavía mejor, se puede hacer algo?


Título: Re: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
Publicado por: AlbertoBSD en 2 Noviembre 2020, 21:29 pm
Acabo de buscar, pense que se podia definir utilizando el segundo parámetro de json_encode pero no, no esta la opcion de forzar el uso de comillas sencillas.

Y a todo esto, ¿hay alguna diferencia para javascript?


Podrias tratar de realizar la sustitución manualmente, sin embargo dependiendo del contenido puede darte problemas al momento de escapar las " que realmente estén en las variables.

Código
  1. $array = array('A', 'B', 'C', 'D');
  2. echo  str_replace('"',"'",json_encode($array));
  3.  

Saludos!


Título: Re: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
Publicado por: Leguim en 2 Noviembre 2020, 21:47 pm
Acabo de buscar, pense que se podia definir utilizando el segundo parámetro de json_encode pero no, no esta la opcion de forzar el uso de comillas sencillas.

Y a todo esto, ¿hay alguna diferencia para javascript?


Podrias tratar de realizar la sustitución manualmente, sin embargo dependiendo del contenido puede darte problemas al momento de escapar las " que realmente estén en las variables.

Código
  1. $array = array('A', 'B', 'C', 'D');
  2. echo  str_replace('"',"'",json_encode($array));
  3.  

Saludos!

Claro, digamos que donde quiero aplicar esto porque estoy teniendo problemas es en esta parte:

Código
  1. <elemento onclick="funcion_js(["A", "B", "C"]);">cualquier cosa</elemento>
  2.  

Básicamente da problemas en onclick con esto de las comillas dobles, entonces de no poder cambiar o resolver esto de la forma que buscaba lo haría usando eval([nombre de la variable/arreglo]) como parámetro y creo que no me debería dar este problema.

Igual antes voy a probar tu código y te digo que tal.


Título: Re: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
Publicado por: Danielㅤ en 2 Noviembre 2020, 23:01 pm
Hola, estás empleando mal la función "funcion_js" ya que no debés pasar datos de esa forma, lo correcto sería:

var datosParams = ["A", "B", "C"];

estas pasando en crudo todo y en programación no se hace de esa forma, es una mala práctica.
Aquí tenés un ejemplo funcional:

Código
  1. var datosParams = ["A", "B", "C"];
  2. <elemento onclick="funcion_js(datosParams);">cualquier cosa</elemento>

Verás que ahora si funciona y no da problemas, siempre tenés que guardar los datos dentro de una variable antes de la función que va a utilizarla.



Saludos
 


Título: Re: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
Publicado por: MinusFour en 3 Noviembre 2020, 00:36 am
Acabo de buscar, pense que se podia definir utilizando el segundo parámetro de json_encode pero no, no esta la opcion de forzar el uso de comillas sencillas.

JSON no permite comillas sencillas para los strings. No puedes forzar esa opción porque literalmente ningún parser debería entender strings con comillas simples. En pocas palabras, no es parte del "estandar".

En cuanto al propósito del tema original, no deberías ni imprimir javascript desde PHP ni usar los event attritube handlers (e.g. onclick, onfocus, onerror, etc). Mucho menos usar eval para esto.

Pero si tienes que imprimir javascript... e imprimirlo sobre los atributos... vas a tener que escapar los strings con htmlspecialchars.


Título: Re: [Pregunta]: Transformar arreglo Javasacript a PHP (pero de la siguiente manera)
Publicado por: Leguim en 3 Noviembre 2020, 00:47 am
Hola, estás empleando mal la función "funcion_js" ya que no debés pasar datos de esa forma, lo correcto sería:

var datosParams = ["A", "B", "C"];

estas pasando en crudo todo y en programación no se hace de esa forma, es una mala práctica.
Aquí tenés un ejemplo funcional:

Código
  1. var datosParams = ["A", "B", "C"];
  2. <elemento onclick="funcion_js(datosParams);">cualquier cosa</elemento>

Verás que ahora si funciona y no da problemas, siempre tenés que guardar los datos dentro de una variable antes de la función que va a utilizarla.



Saludos
 

DaFFGoRcC-w

Gracias a los tres!