Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] pasar variables de php a js

Estas en el tema de pasar variables de php a js en el foro de Javascript en Foros del Web. Hola me gustaria que me ayuden , tengo un problema: Código PHP: <?php if(! defined ( 'INCLUDE_CHECK' )) die( '' ); function  showComment ( $arr ) ...
  #1 (permalink)  
Antiguo 17/02/2014, 22:51
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
pasar variables de php a js

Hola me gustaria que me ayuden , tengo un problema:
Código PHP:
<?php

if(!defined('INCLUDE_CHECK')) die('');

function 
showComment($arr)
{
    echo 
'
       <div class="waveComment com-'
.$arr['id'].'">
            
            <div class="comment">
                <div class="waveTime">'
.waveTime($arr['dt']).'</div>
                
                <div class="commentAvatar">
                <img src="user/'
.strtolower($arr['foto_firma']).'" width="30" height="30" alt="'.$arr['usr'].'" />
                </div>
                
                <div class="commentText">
                <span class="name">'
.$arr['usr'].':</span> '.$arr['comment'].'
                </div>
                
                <div class="replyLink">
                <a href="javascript:void(0);" onClick="addComment(this,'
.$arr['id'].','.$arr['user_id'].');return false;">Responder</a>
                </div>
                <div class="clear"></div>
            </div>'
;
    
    
// Output the comment, and its replies, if any
    
    
if(isset($arr['replies']))
    {
        foreach(
$arr['replies'] as $r)
            
showComment($r);
    }
    
    echo 
'</div>';
}

function 
waveTime($t)
{
    
$t strtotime($t);

    if(
date('d')==date('d',$t)) return date('h:i A',$t);
    return 
date('F jS Y h:i A',$t);

}

?>
Tengo este boton
Código PHP:
<a href="javascript:void(0);" onClick="addComment(this,'.$arr['id'].','.$arr['user_id'].');return false;">Responder</a
esos datos los esta jalando de una consulta de mysql luego lo pase por un array, mi problema es que cuando quiero enviar
Código PHP:
<a href="javascript:void(0);" onClick="addComment(this,'.$arr['id'].','.$arr['foto_firma'].');return false;">Responder</a
no logra enviarlo, me di cuenta que estando
Código PHP:
<a href="javascript:void(0);" onClick="addComment(this,'.$arr['id'].','.$arr['user_id'].');return false;">Responder</a
si logra enviar las variables porque son numeros pero cuando son letras nada que ver eh intentado casi todo alguna ayuda porfabor derrepente me estoy equivocando??
  #2 (permalink)  
Antiguo 18/02/2014, 03:51
 
Fecha de Ingreso: septiembre-2008
Ubicación: Valencia
Mensajes: 160
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: pasar variables de php a js

Prueba cambiando el orden de las comillas, recuedra que el código PHP se ejecuta primero que el JavaScript.

Código PHP:
<a href="javascript:void(0);" onClick="addComment(this,".$arr['id'].",".$arr['user_id'].");return false;">Responder</a
Ya que con todas las comillas simples te interfieren. No conzco mucho de JS, pero si los argumentos de las funciones son Strings y deben ir entre comillas usa esto, siempre y cuando JS coja como Strings el contenido de las comillas simples.

Código PHP:
<a href="javascript:void(0);" onClick="addComment(this,'".$arr['id']."`,'".$arr['user_id']."');return false;">Responder</a
__________________
Siempre inmerso en nuevos proyectos.

Cuando estoy activo puedes verme en //LiveCoding
  #3 (permalink)  
Antiguo 18/02/2014, 03:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: pasar variables de php a js

Código PHP:
Ver original
  1. echo '...<a href="javascript:void(0);" onClick="addComment(this,\''.$arr['id'].'\',\''.$arr['user_id'].'\');return false;">Responder</a>...';

Te faltan delimitadores (escapados \')

No nos estas mostrando la función js addComment() con lo que no sabemos si el error puede venir de ahi...

En principio ese codigo genera lo siguiente

Si $arr['foto_firma']="unafoto.jpg", $arr['id']=1 y $arr['user_id']=1

Código HTML:
Ver original
  1. <a href="javascript:void(0);" onClick="addComment(this,'1','unafoto.jpg');return false;">Responder</a>
Código HTML:
Ver original
  1. <a href="javascript:void(0);" onClick="addComment(this,'1','1');return false;">Responder</a>

En ambos casos estas pasando un objeto, this, y dos strings a la función addComment si en un caso no funciona debe ser por algo en la propia función...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 18/02/2014 a las 04:05
  #4 (permalink)  
Antiguo 18/02/2014, 09:27
 
Fecha de Ingreso: diciembre-2013
Mensajes: 108
Antigüedad: 10 años, 4 meses
Puntos: 1
Respuesta: pasar variables de php a js

Muchas Gracias tenias razon me faltaban los delimitadores escapados , ahora una pregunta porque al pasar
Código PHP:
<a href="javascript:void(0);" onClick="addComment(this,\''.$arr['id'].'\',\''.$arr['user_id'].'\');return false;">Responder</a>; 
si me funciona envia muy bien las variables pero cuando envio
Código PHP:
<a href="javascript:void(0);" onClick="addComment(this,\''.$arr['id'].'\',\''.$arr['foto_firma'].'\');return false;">Responder</a>; 
ojo que sin haber delimitadores escapados, me puedes explicar un poco mas de delimitadores escapados, muchas gracias por la solución.
  #5 (permalink)  
Antiguo 20/02/2014, 07:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: pasar variables de php a js

$arr['user_id'] es un numero por lo que no necesita delimitadores (tampoco le molestan)
$arr['foto_firma'] es un texto por lo que necesita delimitadores


Delimitadores escapados.... \'

Como estas construyendo un string que debe inclueir dobles comilla y apostrofes, y has elegido el apostrofe como delimitador del string principal, simpre que tengan que aparecer ' apostrofes en el string final deben ir escapados para que no se consideren delimitadores, del constructor.

Si quieres que el string final sea

un texto ' otro texto

NO puedes hacer

Código PHP:
Ver original
  1. echo  'un texto ' otro texto';

debes hacer

Código PHP:
Ver original
  1. echo "un texto ' otro texto";
o

Código PHP:
Ver original
  1. echo 'un texto \' otro texto';

para indicar que ese apostrofe interior no corta el string.


(no se si me he explicado)
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 20/02/2014 a las 07:23

Etiquetas: js, php, variable, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:10.