2010-03-23 10 views
1

J'essaie de faire quelque chose d'assez détroit ... obtenir la valeur php à javascriptvar Passer de php à javascript

here is the page

voici le code ..

<script language="javascript"> 
<?php $imagepath = $_REQUEST["path"]; ?> 
var whatisthepath = <?php $imagepath; ?> 
alert (whatisthepath); 
</script> 

TOUJOURS obtenir UNDEFINE. ... Pourquoi ?

-

wordking final code optimisé:

alert ("<?php echo $_REQUEST["path"]; ?>"); 
+0

Voici le code de travail final: alert (""); – menardmam

Répondre

4

manquant: citations dans le var, sortie php var js, virgule après le réglage var:

<script language="javascript"> 
    <?php $imagepath = $_REQUEST["path"]; ?> 
    var whatisthepath = "<?php echo $imagepath; ?>"; 
    alert (whatisthepath); 
</script> 
3

Toutes les chaînes en JavaScript doivent être entouré de guillemets. Par exemple:

var whatisthepath = "<?php $imagepath; ?>"; 

L'autre problème est que vous n'imprimez pas réellement la chaîne. Toute la ligne de code ci-dessus aboutira à un ensemble de citations vide. La bonne façon de le faire serait de echo le imagepath

var whatisthepath = "<?php echo $imagepath; ?>" 
+0

toujours obtenir une grande boîte d'alerte vide vide – menardmam

+0

@marc voir mon édition. – Yacoby

1

Vous avez oublié d'ajouter un écho ou de la déclaration d'impression devant votre $ imagepath

<script language="javascript"> 
    <?php $imagepath = $_REQUEST["path"]; ?> 
    var whatisthepath = <?php echo $imagepath; ?> 
    alert (whatisthepath); 
</script> 

PHP est un langage serversided en javascript est un langage côté client. Ce qui signifie que vous devez le menacer comme vous le feriez pour le HTML.

Par exemple:

<div><?php echo $content; ?></div> 

Espérons que cela vous donnera une meilleure compréhension ...

2

Pour exactement dans ce but, PHP offre la notation abrégée de <?= ... ?>. Pour afficher la valeur de la variable $ imagepath, vous pouvez utiliser <?= $imagepath ?>. Pour que cela fonctionne, la variable ini short_open_path doit être définie sur true. Ce n'est peut-être pas la valeur par défaut de votre serveur Web.

Donc, cela transforme le code en

<?php 
ini_set('short_open_tag', TRUE); 

$imagepath = SOME_VALUE; 
?> 

<script language="javascript"> 
    var whatisthepath = "<?= imagepath ?>"; 
    alert(whatisthepath); 
</script> 

Modification de la valeur ini peut ne pas être pratique si elle est à peu près quelques variables, mais si cela arrive plus souvent dans le code, je tends à trouver faire les choses plus lisibles.

+0

Je ne connaissais pas celui-là, mais ça marche bien, et je vais l'utiliser dans le futur! .... merci! – menardmam

+0

Donc, il se transforme maintenant en 'alert (" ");'? –

1

Vous pouvez utiliser json_encode() pour vous assurer que la variable est correctement échappée et citée, etc. pour javascript. par exemple:

<?php $imagepath = $_REQUEST["path"]; ?> 

<script language="javascript"> 
    var whatisthepath = <?php echo json_encode($imagepath); ?> ; 
    alert (whatisthepath); 
</script> 
0

Vous devez vous assurer que la syntaxe de la variable JS est correcte.

<script language="javascript"> 
    <?php $imagepath = $_REQUEST["path"]; ?> 
    var whatisthepath = <?php echo json_encode($imagepath); ?>; 
    alert (whatisthepath); 
</script> 
Questions connexes