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

我用五个参数调用了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;

它仍然显示错误 Parse error: syntax error, unexpected T_VARIABLE in C:\xampp\htdocs\Fluid Solution\fluid-solution-website-template\interact\profile1.php 在第 130 行

第 130 行是该<a href...行。

4

1 回答 1

4

您的代码的第一个版本既不是 PHP(javascript/HTML 标记是“裸”的)也不是 Javascript:“。” $variable字符串连接运算符在 Javascript 中不起作用,扩展也不起作用。

你可以让它像这样在 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).
?>

请注意,在 here-document(和 之间的区域<<<HTMLHTML中,您不能使用字符串连接运算符“。” (或任何其他)。

或者,您可以像在代码的第二个版本中所做的那样,仅将变量替换<?php echo $variablename; ?>为 HTML,其余部分保留为 HTML。

作为一个更简单的示例,让我们考虑一个alert()带有从 PHP 发送的消息的框。这意味着:

1)脚本在服务器端执行;标签之间的任何东西<?php ?>都会被执行,它的输出会替换标签本身。

在这个阶段之后,我们不再有 PHP,而是 HTML 和 Javascript 的混合体,可以由它发送到的客户端执行。所以我们想要一个像

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

或者我们可以使用 here-document 来实现,其中操作符不起作用,但 $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 回答