Como pasar variables entre Javascript y PHP

18,691 views
Skip to first unread message

Francisco Zarco

unread,
Aug 2, 2013, 3:45:11 PM8/2/13
to php-m...@googlegroups.com
Hola lista, ya sé como generar una página web con PHP y mostrar contenido desde mi base de datos, pero ahora quiero poder tener datos como digamos el detalle de una fila en javascript para poder mostrarlo al dar click.

¿Alguien sabe como puedo poner esos datos de forma que javascript los pueda leer?

Luis Eduardo Estrada

unread,
Aug 2, 2013, 4:57:31 PM8/2/13
to Php México
El javascript se ejecuta del lado del cliente y el php del lado del servidor...

si quieres que el javascript obtenga datos de PHP, necesitas hacer una llamada al server

te recomiendo que uses ajax


El 2 de agosto de 2013 14:45, Francisco Zarco <francisc...@gmail.com> escribió:
Hola lista, ya sé como generar una página web con PHP y mostrar contenido desde mi base de datos, pero ahora quiero poder tener datos como digamos el detalle de una fila en javascript para poder mostrarlo al dar click.

¿Alguien sabe como puedo poner esos datos de forma que javascript los pueda leer?

--
--
Este correo ha llegado a ti desde la Lista de Correo del Grupo PHP México.
Para cambiar la configuración de tu suscripción visita: http://grupo.phpmexico.mx/
 
* Visita nuestro sitio: http://phpmexico.mx/
* Síguenos en Twitter: http://twitter.com/phpmx
* Únete al Grupo de Facebook: http://www.facebook.com/pages/PHP-Mexico/137017066340686
 
---
Has recibido este mensaje porque estás suscrito al grupo "PHP México" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a php-mexico+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
 
 

Iván Cortés Ibáñez

unread,
Aug 2, 2013, 6:22:44 PM8/2/13
to php-m...@googlegroups.com
Hola Francisco,

Pasar datos de PHP a JS es fácil, pasarlos de JS a PHP es dificil.

Para el primer caso (PHP-->JS) podrías hacerlo de la siguiente forma:


<scrtipt>
     var miVariableJS = '<?php echo $miVariablePHP; ?>';
</script>

Para el segundo caso (JS-->PHP) puedes hacerlo mediante un cambio de página:

<script>
     function pasarVariables (miVariableJS) {
          window.location('mipagina.php?mivariableget='+miVariableJS);
     }

//metes la funcion en una liga o boton o evento...
</script>

Luego, en la otra página cachas tus variables con un GET.

<?
     $miVariablePHP = $_GET('mivariableget');
?>

Esto mismo lo puedes hacer con AJAX, es un poco más complicado.

Me parece que otra herramienta que puedes usar es JSON, pero desconozco como hacerlo.

Saludos,


Iván.
---
asdf


2013/8/2 Luis Eduardo Estrada <inter...@gmail.com>

Iván Cortés Ibáñez

unread,
Aug 2, 2013, 6:29:13 PM8/2/13
to php-m...@googlegroups.com
Puaj, ya te habían contestado en PHP Latinoamerica.

Iván.
---
asdf


2013/8/2 Iván Cortés Ibáñez <icor...@gmail.com>

José Francisco Díaz Arredondo

unread,
Aug 5, 2013, 10:53:31 AM8/5/13
to php-m...@googlegroups.com


como observación a código de Iván, al hacer 
<scrtipt>
     var miVariableJS = '<?php echo $miVariablePHP; ?>';
</script>

el código es correcto la variable estará disponible en el ámbito global de JS, pero hay un problema que pasa si $miVariable tiene un "'"?, el PHP te generaria el siguiente script una ves ejcutado 

<scrtipt>
     var miVariableJS = 'algo con 'comillas sencillas'';
</script>

como ves este script no esta bien y se generará un error en JS. 

para evitar eso imprime el retorno de json_encode, el se encarga de parcear la variables a JS y te retorna su cadena correcta, resuelve por ejemplo ese error que te comento que a mi me llego a pasar, y por ejemplo si tu variable es un entero json_encode no te lo retorna entre comillas, si es un string si, y si tiene caracteres a parsearse la funcion se encarga. 
<scrtipt>
     var miVariableJS = <?php echo json_encode($miVariablePHP); ?>;
</script>


el pase de variables o de datos por "ajax" te sirve si es un valor que cambia constantemente y evitar un postback completo de la pagina o bien que al momento de dar click pudo a ver cambiado ese seria el escenario correcto para usar xhr(ajax). si tu variable no cambia vasta con imprimir en el script del ejemplo en un área  anterior a su uso.

Iván Cortés Ibáñez

unread,
Aug 5, 2013, 11:04:31 AM8/5/13
to php-m...@googlegroups.com
Sin involucrar a JSON:

<?php
     $miVariablePHPSanitizada = addslashes(miVariablePHP);
?>

<scrtipt>
     var miVariableJS = '<?php echo $miVariablePHPSanitizada ; ?>';
</script>


Mi ejemplo original era completamente didáctico, solo para ilustrar un punto. Con este ejemplo que pongo ahora nos evitamos involucrar una tercera tecnología (lo cual siempre es bueno, keep it simple) y resolvemos el problema que plantea José.


Iván.
---
asdf


2013/8/5 José Francisco Díaz Arredondo <wari...@gmail.com>

Iván Rico

unread,
Aug 5, 2013, 11:05:07 AM8/5/13
to php-m...@googlegroups.com
comunmente si no hago uso de AJAX, pongo los valores en tags <INPUT> y posteriormente con JS recojo el valor para inicializar la variable ya sea con getElementById o mas sencillo con jquery


algo asi como

<?php

//escribir un input oculto el valor que se desea manipualar en JS
echo "<input id='miVar'  type='hidden'  value=$miVar />" ;
?>

y en el código JS


<script>

function algoQueHacer() {

// inicializar x tomando el valor que esta en el input oculto
  var x = document.getElementById("miVar");
 
}

</script>



saludos
Iván Rico

-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GE d- s:-- a-- C+++ UL++ P L++ E- W++ N- o-- K- w+
O-- M- V-- PS PE Y-- PGP- t--- 5 X R tv b- DI D----
G e+++ h! r- y+
------END GEEK CODE BLOCK------
               www.geekcode.com         

Sitio Web: http://ivan.rico.org.mx
Linux User: #340251

José Francisco Díaz Arredondo

unread,
Aug 5, 2013, 11:42:47 AM8/5/13
to php-m...@googlegroups.com
Iván Rico, tienes el mismo problema que Iván Cortes solo que ahora en HTML, en el ejemplo como esta no cierras las comillas del atributo value, por lo que el explorador el valor del atributo si existe un valor con espacio solo será la primera secuencia de caracteres ejemplo 


<?php 

//escribir un input oculto el valor que se desea manipualar en JS
$miVar="Es una cadena con muchos espacios";
echo "<input id='miVar'  type='hidden'  value=$miVar />" ;
?>

el valor retornado del valor de document.getElementById('miVar').value solo sera "Es", esto lo resuelve agregando las comillas que supongo es un error de "dedo" en el ejemplo, pero ahora tienes el problema de que si tu cadena tiene una comilla... también 

<?php 

//escribir un input oculto el valor que se desea manipualar en JS
$miVar="Es una cadena con muchos espacios y ademas tiene 'comillas' ";
echo "<input id='miVar'  type='hidden'  value='$miVar' />" ;
?>

ahora el retorno de document.getElementById('miVar').value será "Es una cadena con muchos espacios y ademas tiene " igualmente lo resuelves parseando tus variables que vallan a estos campos pero aqui te recomiedo que uses addslashes o htmlspecialchars. 

<?php 

//escribir un input oculto el valor que se desea manipualar en JS
$miVar="Es una cadena con muchos espacios y ademas tiene 'comillas' ";
echo "<input id='miVar'  type='hidden'  value='".htmlspecialchars($miVar)."' />" ;
?>

Y como recomendación cambia el orden de tus comillas, comillas sencilla para definir el string en PHP y comillas doble para los atributos de html. 

--------------------------------------

Ivan Cortes, cierto es que con addslashes se margina el error que llegue una cadena "encomillada", pero aun así prefiero json_encode, ¿meter otra tecnología?, se esta imprimiendo una variable a JS no un XML y no vas a reutilizar esa variable en otra cosa que no sea javascript. ademas json_encode, te rederea hasta variables complejas, por ejemplo "bajar" un array u objeto a JS sin mayor problema, por ejemplo ¿que harias si lo que quieres bajar a JS es un array? y es algo soso pero si es un entero se interpreta como tal y no como una cadena que es lo que pasaría con tu metodología. simplemente creo que json_ecode es mas robusto para bajar variables a JS. has algunas pruebas y verás que va mejor ;) 






2013/8/5 Iván Rico <ivan...@gmail.com>

Iván Rico

unread,
Aug 5, 2013, 11:53:19 AM8/5/13
to php-m...@googlegroups.com
en efecto hay problemas en mi ejemplo no lo niego lo hice al pelo y sin pasarlo por algún analizador sintactico/semantico/etc, mi idea era mostrar solo el concepto, no quise colocar las herramientas para aumentar la seguridad e integridad del intercambio de datos  por varias razones

la primera, no fue la pregunta que se hizo
la segunda, a menor cantidad de código mayor entendimiento del ejemplo
la tercera, ya habia otros hablando del tema que no se pregunto

esta opción que propuse me agrada mas porque reduce la mezcla de lenguajes al menos entre PHP y JS

saludos y espero que el compañero logre su objetivo




Iván Cortés Ibáñez

unread,
Aug 5, 2013, 12:03:21 PM8/5/13
to php-m...@googlegroups.com
Tocayo,

A eso yo le llamo "Ejemplo didáctico", es decir, cuando solamente pones la sintaxis que hace relación a la duda que se plantea.

En mi caso fue lo mismo, pero al parecer José trabaja en control de calidad ;)

Saludos,

Iván.
---
asdf


2013/8/5 Iván Rico <ivan...@gmail.com>

Iván Rico

unread,
Aug 5, 2013, 12:08:25 PM8/5/13
to php-m...@googlegroups.com
si verdad, hahahah que show,. pero no lo critico al buen José, quedo en el entendido de que quiere ayudarnos a todos, ademas siempre se requerira construir códigos con la mas alta calidad que nuestros esfuerzos nos permitan

asi que mi estimado Francisco no heches en saco roto lo que José expone en sus textos

saludos

José Francisco Díaz Arredondo

unread,
Aug 5, 2013, 12:11:47 PM8/5/13
to php-m...@googlegroups.com
LOL simplemente recuerdo los dolores de cabeza que me causo omitir esos detalles y lo que me costo darme cuenta del error xP... 


2013/8/5 Iván Cortés Ibáñez <icor...@gmail.com>

Domingo Martinez

unread,
Mar 25, 2015, 3:49:37 PM3/25/15
to php-m...@googlegroups.com
Amigo yo lo logre así:
        document.getElementById('items02').src = "../imprimir/imprimir_factura.php?cedula="+ced+"&nombre="+nom;

donde items02 es el nombre de un iframe

Luis Alfredo Abarca Galicia

unread,
Mar 25, 2015, 6:50:16 PM3/25/15
to php-m...@googlegroups.com
Convierte el registro en JSON y luego lo lees con JavaScript
--
--
Este correo ha llegado a ti desde la Lista de Correo del Grupo PHP México.
Para cambiar la configuración de tu suscripción visita: http://grupo.phpmexico.mx/
 
* Visita nuestro sitio: http://phpmexico.mx/
* Síguenos en Twitter: http://twitter.com/phpmx
* Únete al Grupo de Facebook: http://www.facebook.com/pages/PHP-Mexico/137017066340686

---
Has recibido este mensaje porque estás suscrito al grupo "PHP México" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a php-mexico+...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages