混合JavaScript和PHP

时间:2011-10-23 19:11:36

标签: php javascript jquery

我有一个名为 file.php

的文件 此文件中包含的

是以下代码:

<script type="text/javascript">
        //....
        var sumJS = 10;
    <?php $sumPHP = sumJS  ?>
</script>
    <?php echo "Sum = " . $sumPHP ?>

如何为$ sumPHP分配sumJS?

如果我想反过来这样做,那么我会写:

  $sumPHP = 10;
<script type="text/javascript">
    var sumJS;
    sumJS = <?php echo $sumPHP ?>;
    alert(sumJS);
</script>

但我怎样才能为我的问题重新制作呢?

4 个答案:

答案 0 :(得分:2)

Javascript可以更改PHP的变量,反之亦然。

这是一个例子。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
<?php $aphp=1 ?>

<script "text/javascript">document.write("<?php $aphp=2 ?>")
var ajava=1;</script>


<?php echo "aphp= $aphp"; echo "<br>";
echo "<script \"text/javascript\">ajava=2;</script>"
?>
<script "text/javascript">document.write("ajava= "); document.write(ajava)</script>
</body>
</html>

如果我想将php变量分配给java变量,反之亦然,该怎么办? 上面显示了你可以在php中为java赋值,反之亦然,只需在php中使用echo和在java中使用document.write编写赋值。这就是你分配价值的方式。

在php和java之间混合实际变量并不复杂。你所做的是用你需要的语言编写一个赋值,以获取变量的值,并将其赋值给另一种语言的变量。这是一个例子。

将php分配给java

<?php echo "<script type='text/javascript'>javasum=$phpsum</script>" ?>

将java分配给php可以通过两种方式完成

<script type='text/javascript'>var str="<?php $phpsum=";
str=str+javasum; str=str+" ?>";
document.write(str);
</script>

或更方便

javasum=<?php echo $phpsum ?>;

混合使用php和javascript来执行除变量赋值之外的操作

Javascript也可以在phpcode中混合在phpcode中执行javascript函数。假设您只想在PHP代码中满足条件时使用javascript来突出显示文本。但要做到这一点,你需要回应javascript代码部分。还可以使用转义字符“\”在echo命令中包含引号。以下是此

的示例

在开始之前,请确保php内容类型为html。在Dreamweaver站点编辑器软件中,会自动包含执行此操作的标题。

    <p><span id="htext">htext</span></p>


  <?php 
$a=5;
echo "<h3> hello world</h3>";

if ($a==5) {
echo "<script type=\"text/javascript\">";
echo "document.getElementById(\"htext\").style=\"background-color:yellow\"";
echo "</script>";
}
?>
<p>is a=5</p>
<p><?php echo $a ?>&nbsp; </p>

答案 1 :(得分:1)

你只是缺少标签

<?php
$sumPHP = 10;
?>
<script type="text/javascript">
var sumJS;
sumJS = <?php echo $sumPHP ?>;
alert(sumJS);
</script>

demo

答案 2 :(得分:1)

$ sumPHP是服务器端值,将在服务器上进行评估。然后,服务器生成页面内容并将其发送到客户端。然后浏览器接收页面内容并评估客户端值sumJS。

所以你永远不能为$ sumPHP分配sumJS,因为$ sumPHP是在sumJS之前计算的。

但是可以这样做来显示页面:

<?php echo "Sum = "?><script type="text/javascript">document.write(sumJS);</script>

或者更确切地说

<script type="text/javascript">document.write('Sum = ' + sumJS);</script>

答案 3 :(得分:0)

很抱歉,目前我没有时间写一个例子。但我相信这个想法会起作用。也许这里有人可以做快速测试。

只需创建一个具有唯一ID的隐藏元素,例如a span = id =“uniqueBufferForCommunicatingBetweenPHPandJS”和style =“display:none”。 然后,使用代码的JS部分,使用

将结果写入此范围
  

document.getElementById(“uniqueBufferForCommunicationBetweenPHPandJS”)。innerHTML = XXX;

您甚至可以以JSON的形式编写XXX。

之后,你可以在PHP中使用像

这样的东西
  

$ bufferspan = $ dom-&gt; getElementById('uniqueBufferForCommunicationBetweenPHPandJS');

获取范围,并阅读其内容,可能是使用

  

$ avariable = $ dom-&gt; ownerDocument-&gt; saveHTML($ avariable);

然后解释存储在$ avariable中的结果。我不完全确定最后的PHP代码。