php
  • javascript
  • variables
  • 2010-03-01 4 views 0 likes 
    0

    J'essaie de comprendre comment définir ma variable session_id à utiliser dans un fichier js externe. Voici ce que j'ai.comment définir une variable pour le fichier javascript externe?

    fichier php:

    $output = '<script src="test.js"> 
        var session_id = '.$_SESSION['id'].' 
    </script>'; 
    print $output; 
    

    fichier js:

    alert(session_id); 
    

    Avec cela, je reçois une erreur disant id_session n'est pas défini. Existe-t-il un moyen de transmettre cette information? Je sais que je pourrais juste configurer une entrée cachée avec l'information mais je pense qu'il y a une meilleure manière de le faire.

    +0

    Peu importe la façon dont vous créez, le texte résultant doit être un code JavaScript valide: comparer alerte (session_id) avec alert ("session_id") –

    Répondre

    2

    Hum, qu'en est:

    $output = '<script type="text/javascript> var session_id = '.$_SESSION['id'].'</script><script type="text/javascript" src="test.js"></script>'; 
    print $output; 
    

    ?

    +0

    Petite faute de frappe: supprime le "."derrière $ _SESION ['id'] et utiliser $ _SESSION ['id'] au lieu de $ _SESION ['id'];) – Select0r

    +0

    Merci pour votre avis! –

    0

    Le contenu de la balise <script> est exécuté uniquement si le fichier JavaScript est et non trouvé. Définir vos variables dans une balise <script> séparée avant qui n'a pas ensemble de fichiers:

    <script> 
        var session_id = '<?=$_SESSION['id']?>'; 
    </script> 
    <script src="test.js"> 
    </script> 
    
    1

    Si vous pouvez traiter id_session comme une variable globale, alors ce qui suit va le faire:

    <script> 
        var session_id = '<?php echo $_SESSION['id'];?>' 
    </script> 
    <script src="test.js"></script> 
    

    Si vous voulez pour rendre la variable disponible uniquement pour le fichier javascript dans une fermeture etc. vous pouvez envoyer le fichier js via l'analyseur PHP ou utiliser les paramètres de votre fichier js, mais ce dernier n'est pas vraiment accessible depuis javascript, voir my question about that.

    2

    Si vous incluez un fichier JS externe, vous ne pouvez pas placer de code entre les balises de script. Donc, vous voulez:

    <script type="text/javascript"> 
        var session_id = <?php print $_SESSION['id']; ?>; 
    </script> 
    <script type="text/javascript" src="test.js"></script> 
    

    Bien que vous puissiez contourner ce kludginess en faisant l'ID de session un champ de formulaire caché dans votre code HTML et en utilisant des méthodes DOM en test.js pour le trouver.

    -1

    Une autre solution est d'avoir PHP servir un script comme celui-ci:

    • Avoir un fichier JS préparé avec les définitions de variables dont vous avez besoin:
    var value1 = '{value1}'; 
    var value2 = '{value2}'; 
    
    ... 
    // script goes here 
    
    • Avec PHP, lisez la fichier et remplacer les balises {value1} et {value2} avec vos données:
    
    if ($_GET["script"]) 
    { 
    $data = array(
        "value1" => $_SESSION["id"], # i.e. 
        "value2" => $foo 
    ); 
    
    $script = file_get_contents($script . ".js"); 
    
    foreach ($data as $key => $value) 
    { 
        $script = str_replace("{" . $key . "}", $value, $script); 
    } 
    
    header("Content-Type: text/javascript"); 
    echo $script; 
    exit(); 
    } 
    
    • Ensuite, vous pouvez appeler votre PHP "analyseur" comme ceci:
    <script type="text/javascript" src="?script=myscript"></script> 
    
    Questions connexes