2012-09-23 8 views
0
<div class="interactionLinksDiv"> 
<a href="javascript:toggleReplyBox('.$fullname.','.$current_id.','.$current_id.','.$id.','.$thisRandNum.')">REPLY</a> 
</div> 

J'ai appelé la fonction javascript toggleReplyBox avec cinq paramètres. Ce code est écrit à l'intérieur des balises php. Mais ce code ne s'exécute pas correctement et les paramètres ne sont pas transmis correctement. Si j'appelle la fonction toggleReplyBox ici sans paramètres cela fonctionne bien mais ce n'est pas ce que je veux.Javascript php ne fonctionne pas correctement

<div class="interactionLinksDiv"> 
<a href="javascript:toggleReplyBox('<?php echo $fullname; ?>','<?php echo $current_id; ?>','<?php echo $current_id ; ?>','<?php echo $id; ?>','<?php echo $thisRandNum; ?>')">REPLY</a> 
</div> 

Lorsque j'ai copié ce code à la partie html de mon fichier php Il fonctionne très bien et les paramètres sont passés et la fonction exécute correctement. Mais je veux savoir pourquoi la fonction n'est pas capable de fonctionner à l'intérieur des balises php quand tout est pareil.

function toggleReplyBox(sendername,senderid,recName,recID,replyWipit) { 
$("#recipientShow").text(recName); 
document.replyForm.pm_sender_name.value = sendername; 
document.replyForm.pmWipit.value = replyWipit; 
document.replyForm.pm_sender_id.value = senderid; 
document.replyForm.pm_rec_name.value = recName; 
document.replyForm.pm_rec_id.value = recID; 
document.replyForm.replyBtn.value = "Send"; 
if ($('#replyBox').is(":hidden")) { 
     $('#replyBox').fadeIn(1000); 
} else { 
     $('#replyBox').hide(); 
}  

}

A l'intérieur des balises php j'ai changé le code:

print <<<HTML 
<div class="interactionLinksDiv"> 
<a href="javascript:toggleReplyBox('$fullname','$current_id','$current_id','$id','$thisRandNum')">REPLY</a> 
</div> 
HTML; 

Et il montre toujours l'erreur Parse error: syntax error, T_VARIABLE inattendue dans C: \ xampp \ htdocs \ Solution fluide \ fluid-solution-site-template \ interact \ profile1.php en ligne 130

La ligne 130 est la ligne <a href....

+0

merci pour l'édition j'ai foiré le code –

+0

Je vous suggère de cliquer sur le "code exemple" après avoir sélectionné le texte. Vous trouverez peut-être que [this] (http://stackoverflow.com/editing-help) est également utile. –

+0

Vous devez afficher votre code complet, car votre code ne fonctionnera pas. Cette partie d'un fichier php? Est-ce une chaîne php? Si oui vous mélangez 'et' ce qui vous causera des problèmes Quelle est la sortie html/javscript que vous obtenez quand la page php s'exécute? –

Répondre

4

La première version de votre code n'est ni PHP (les tags javascript/HTML sont "nus") ni Javascript: le "." L'opérateur de concaténation de chaînes ne fonctionnera pas en Javascript, pas plus que l'extension $variable.

Vous pouvez l'obtenir pour travailler en PHP comme ceci:

<?php 
    $fullname = "Test"; 
    $current_id = 15; 
    $id = 9; 
    $thisRandNum = 42; 
    // All lines beyond this point, and... 
    print <<<HTML 
<div class="interactionLinksDiv"> 
<a href="javascript:toggleReplyBox('$fullname','$current_id', 
'$current_id','$id','$thisRandNum')">REPLY</a> 
</div> 
HTML; 
    // ...up to here, start at the first column (i.e. they are not indented). 
?> 

Notez que dans le ici-documents (région située entre <<<HTML et HTML), vous ne pouvez pas utiliser l'opérateur de concaténation de chaîne « » (ou tout autre).

Ou vous pouvez faire comme vous l'avez fait dans la deuxième version de votre code, en remplaçant seulement les variables avec <?php echo $variablename; ?> et en laissant tout le reste au format HTML.

À titre d'exemple plus simple, considérons une boîte alert() avec un message envoyé par PHP. Cela signifie que:

1) le script est exécuté côté serveur; quelque chose entre <?php ?> balises est exécuté, et sa sortie remplace les balises eux-mêmes.

Après cette phase, nous n'avons plus PHP mais un mélange de HTML et Javascript, qui peut être exécuté par le client auquel il est envoyé.Donc, nous voulons avoir un HTML comme

<script type="text/javascript"> 
    alert('Hello, world'); 
</script> 

Pour ce faire, nous pouvons générer tout le code HTML en PHP:

echo '<script type="text/javascript">'; 
echo "alert('$message');"; // or also: echo 'alert("' . $message . '");'; 
echo '</script>'; 

Ou nous pouvons le faire avec un ici-document où les opérateurs ne fonctionnent pas , mais les variables $ font:

echo <<<HEREDOCUMENT 
<script type="text/javascript"> 
    alert('$message'); 
</script> 
HEREDOCUMENT; 

Ou nous pouvons courir tout en HTML, et seulement compter sur PHP pour générer la variable seule:

<script type="text/javascript"> 
    alert('<?php echo $message; ?>'); 
</script> 

Mais toujours vous devez garder séparé ce qu'il fait en PHP, ce qui dans Javascript, et ce qui est dans le balisage HTML.

+0

c'est l'erreur Erreur d'analyse: erreur de syntaxe, inattendue T_VARIABLE dans C: \ xampp \ htdocs \ Solution fluide \ fluid-solution-site-template \ interact \ profile1.php on line 129 –

+1

Vous devez faire attention: le mot après le signe <<< >> ne doit être suivi par rien, pas même un espace; la deuxième occurrence doit être précédée de rien (la ligne doit commencer par elle), et suivie d'un point-virgule ';'. – LSerni

+0

voir la dernière modification J'ai le même problème –

Questions connexes