2011-06-02 4 views
1

Considérons cet exemple simple;Variable PHP en Javascript

<?php $text = test; ?> 

<script type="text/javascript" defer="defer"> 

var test; 

test = "<?php echo $text; ?>" 

$(document).ready(function(){ 
alert(test); 
}); 

</script> 

Cela fonctionne très bien. Créer l'alerte avec le texte du php var. Cependant, si je place;

<?php $text = test; ?> 

sous le script - cela ne fonctionne pas. J'ai essayé la fonction de report. Qu'est-ce que je fais mal?

Vive

+0

Que voulez-vous faire exactement? Essayez-vous d'obtenir la valeur de la variable JavaScript 'test' en PHP? –

+0

mais où voulez-vous mettre la variable php? Si vous le mettez avant l'alerte ou dans la méthode d'alerte, alors cela devrait fonctionner ... – Cata

+0

Notez que 'est faux dans tous les cas sauf si vous avez une constante' test'. Vous devriez définir une chaîne correcte: ' '. Si vous pensez que vous faites référence à la variable JavaScript 'test' si vous mettez la ligne à la fin, alors vous avez tort. Voir @ la réponse de Quentin dans ce cas. –

Répondre

6

Si vous placez

<?php $text = "test"; ?> 

sous le code JS, la variable $ text est pas encore défini, vous ne pouvez pas l'écho plus tôt (modifier) dans le script .

+0

Que voulez-vous dire "$ text" n'est pas défini? Ce code le définit! (Eh bien, il essaie de le faire, mais puisque l'assignation de 'test' va provoquer une erreur (à moins que vous n'ayez défini une constante appelée' test' ou quelque chose comme ça), elle se casse). En fait, rétrospectivement, toute la question n'a pas beaucoup de sens, car elle prétend que les choses fonctionnent même si elles devraient faire erreur. – Quentin

+0

@Quentin: S'il n'y a pas de 'test' constant, alors PHP l'interprète comme une chaîne''test ''. C'est pourquoi cela fonctionne si cette ligne est placée avant 'mais évidemment il ne ferait pas 'écho' s'il était mis après (c'est ce que l'OP a essayé). On ne sait pas très bien ce que l'OP veut vraiment faire (votre réponse a aussi du sens, étant donné l'ambiguïté du 'test'). De toute façon, le downvote est injustifié (celui qui a fait cela). –

+0

Lire la seconde moitié de son poste. Il mentionne de déplacer la définition de test de $ AU-DESSOUS du javascript. Donc, quand echo $ test arrive, $ test n'est pas défini. –

1

Apparemment, vous essayez d'affecter une variable côté client à une variable côté serveur? En raison de ce que je sais, les variables côté serveur peuvent PAS "interagir" directement avec les variables client-sider sans rien entre les deux. Cela signifie <?php $test = test; ?> ne fonctionne pas correctement car les variables qui sont inclus dans <?php ?> seront traitées comme des variables côté serveur, et donc, votre variable côté client test est soit considéré comme

  • une constante non définie ou
  • une chaîne sans guillemets ''
0

Il y a deux ordinateurs impliqués, le serveur web (php qui traite) et le navigateur de l'utilisateur (qui traite javascript). Donc non, vous ne pouvez pas renvoyer une variable javascript à php sans envoyer la valeur de cette variable du navigateur de l'utilisateur au serveur web (normalement en postant un formulaire ou un ajax).