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

5 つのパラメーターを指定して javascript 関数 toggleReplyBox を呼び出しました。このコードは php タグ内に記述されています。しかし、このコードは正しく実行されておらず、パラメーターが正しく渡されていません。ここでパラメーターなしで関数 toggleReplyBox を呼び出すと、正常に動作しますが、それは私が望むものではありません。

<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>

このコードを php ファイルの html 部分にコピーすると、正常に動作し、パラメーターが渡され、関数が適切に実行されます。しかし、すべてが同じであるのに、関数がphpタグ内で機能しない理由を知りたいです。

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();
}      

}

PHPタグ内でコードを変更しました:

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

そして、130 行目の C:\xampp\htdocs\Fluid Solution\fluid-solution-website-template\interact\profile1.php のエラー Parse error: syntax error, unexpected T_VARIABLE が引き続き表示されます

130行目がその<a href...行です。

4

1 に答える 1

4

コードの最初のバージョンは、PHP (javascript/HTML タグは「裸」) でも Javascript (「.」) でもありません。文字列連結演算子は Javascript では機能せず、$variable展開も機能しません。

次のように PHP で動作させることができます。

<?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).
?>

ヒアドキュメント ( と の間の領域) 内では、文字列連結演算子 "." を使用できないことに注意して<<<HTMLくださいHTML。(またはその他)。

または、コードの 2 番目のバージョンで行ったように、変数のみを に置き換え<?php echo $variablename; ?>、残りはすべて HTML のままにすることもできます。

alert()より簡単な例として、 PHP から送信されたメッセージを含むボックスを考えてみましょう。この意味は:

1) スクリプトはサーバー側で実行されます。タグ間のすべて<?php ?>が実行され、その出力がタグ自体を置き換えます。

このフェーズの後、PHP はなくなり、送信先のクライアントで実行できる HTML と Javascript が混在しています。したがって、次のような HTML が必要です。

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

これを行うには、PHP ですべての HTML を生成できます。

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

または、演算子が機能しないが $variables が機能するヒアドキュメントを使用して実行できます。

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

または、すべてを HTML で実行し、PHP のみに依存して唯一の変数を生成することもできます。

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

しかし、PHP で行われていること、Javascript で行われていること、および HTML マークアップで行われていることを常に分離しておく必要があります。

于 2012-09-23T19:29:37.887 に答える