2011-03-15 59 views
8

Tengo una variable de sesión PHP, $_SESSION['user'], activa durante toda la sesión. En la sección principal, tengo mi archivo JavaScript incluido, scripts.js.Pasar la variable PHP a JavaScript

¿Cómo paso la variable de sesión al archivo JavaScript si deseo algo como lo siguiente?

$.("#btn').click (
    function() { 
     alert('<?php echo $_SESSION['user']; ?>'); 
    } 
) 

A medida que el <?php ?> no se reconoce en el archivo JavaScript, el código anterior no funciona. Así que tengo que poner el archivo PHP en sí, pero ¿cómo lo guardo en el archivo JavaScript?

Respuesta

14

En el archivo PHP que podría fijar su usuario como varibale mundial:

<script type="text/javascript"> 
    var ptamzzNamespace = { 
     sessionUser : '<?php echo $_SESSION['user']; ?>' 
    }   
</script> 

Incluir este antes de incluir el código JavaScript externo.

Luego, en su archivo JavaScript que se puede utilizar:

$.("#btn').click (
    function() { 
     alert(ptamzzNamespace.sessionUser); 
    } 
) 

Además: Si no está seguro de si su varibale sesión puede contener comillas itsself, puede utilizar addslashes() para solucionar este problema:

<?php echo addslashes($_SESSION['user']); ?>, incluso si esto puede producir algo que realmente no desea mostrar (porque produce una cadena con barras) ayudará a que su código no falle. (Gracias a Artefacto)

¿Esta sería una opción para usted?

+3

No haría eso. Las variables globales de JavaScript son casi siempre una mala idea. – philonous

+1

¿Por qué? Lo único que podría suceder es que la variable global se mezcle con alguna existente de algún marco. Para evitar esto, es fácil crear su propio objeto de espacio de nombres para almacenar sus variables globales. Edité la pregunta para mostrar cómo. – Chris

+0

Ok, la creación de un espacio de nombres propio-objeto definitivamente mitiga el riesgo de mezclar algo. Pero en su respuesta no usó uno ...;) – philonous

0

analizar el archivo JavaScript incluido como PHP

Crear un archivo .htaccess en que JavaScript directorio y añadir la siguiente línea.

AddHandler php-cgi .js 

<?php ?> etiquetas hasta ahora se reconocen por su archivo JavaScript.

Uso de Ajax para buscar el ID de usuario

Crear un archivo llamado getID.php que sólo se hace eco de la ID de los usuarios. Luego, en su archivo JavaScript puede usar el siguiente código.

$.get('getID.php', function(uid) { 
    alert('User ID is:' + uid); 
}); 

crear una etiqueta de secuencia de comandos antes de incluir el ID de usuario de impresión JavaScript.

<script type="text/javascript"> 
userID = <?php echo $_SESSION['user']; ?>; 
</script> 

Ahora va a tener acceso a la ID de usuarios usando el usuario variable.

2

Establezca el ID de usuario (en PHP) en un tipo de entrada oculta en su archivo. En su código JavaScript, puede leer el valor de los tipos de entrada ocultos.

+0

¡No es una mala idea también! – Chris

0

tratar con la lógica continuación

print ' <script type="text/javascript" language="javascript"> 
function checkForm() 
{ 
    var username = "'.$_SESSION['user'].'"; 
    if(username == '') 
    { 
     alert('No Times selected'); 
     return false; 
     } 
} 
</script>'; 
1

Usted puede configurar su servidor para analizar archivos .js como PHP. Por ejemplo, en la configuración de Apache o.archivo htaccess:

<FilesMatch "scripts.js"> 
    AddHandler application/x-httpd-php5 .js 
</FilesMatch> 
Cuestiones relacionadas