在注释掉的代码中将PHP插入HTML结果

时间:2012-01-06 19:28:13

标签: php html

我试图通过点击一个按钮来调用另一个.php文件中的函数,我在互联网上的其他地方遇到过这种方法,但我不确定它是否有效。我将PHP代码简化为只在屏幕上打印两次而不是调用另一个文件,以证明出现了什么问题:

<?php
echo "hello";
?>
<?php
echo <<<END
<html>
<body>
<button type="button" onclick="handleButton()" id="button1">PHP Test</button>
<script type="text/javascript">
function handleButton()
{
   document.getElementById("button1").innerHTML = "PHP Test<?php echo 'HELLO';?>";
}
</script>
</body>
</html>
END;
?>

不应该按下按钮在屏幕上打印“你好”吗?而是按钮的HTML源代码变为:

<button type="button" onclick="handleButton()"
id="button1">
PHP Test
<!--?php echo HELLO;?-->
</button>

单击按钮时没有任何反应。由于“hello”打印很好,为什么服务器会注释掉第二个php echo命令?

P.S。:我期待很多评论说,“你为什么要首先尝试这样做?”我知道我可以创建一个提交到php文件的HTML表单,但我的目标是在屏幕上创建多个按钮,每个按钮都会导致不同的php文件。我知道我也可以制作一个表格导致一个单独的php文件,看看这个屏幕上的哪个按钮被按下,并调用相应的php文件,但我想避免制作另一个php文件,只是为了这样做,如果这可以工作。因此,除非我错过了一种更有效的方法,否则我更倾向于坚持服务器为什么评论PHP代码的主题。感谢。

5 个答案:

答案 0 :(得分:2)

PHP是一种服务器端语言,在用户获取数据之前执行。这意味着您无法从JavaScript调用PHP函数。为此,您必须向PHP页面发出AJAX请求,并在那里返回结果。另外,请务必将Hello放在引号中。我建议在PHP和JavaScript上查找some tutorials,这样你就可以了解两者之间的交互,以及如何让它们按照你想要的方式进行。

答案 1 :(得分:0)

附注,字符串必须用引号括起来。

<?php echo "hello"; ?>

答案 2 :(得分:0)

如果我了解您要在此处尝试做什么,请尝试以下操作:

<html>
  <body>
    <button type="button" onclick="handleButton()" id="button1">PHP Test</button>
    <script type="text/javascript">
      function handleButton()
      {
        document.getElementById("button1").innerHTML = "PHP Test <?php echo 'HELLO';?>";
      }
    </script>
  </body>
</html>

假设上面的代码位于文件“index.php”中,并且您使用http://example.com/index.php请求此文件。这将导致以下HTML被发送到您的浏览器(如果您在浏览器中加载的页面上执行“查看源代码”,则可以看到):

<html>
  <body>
    <button type="button" onclick="handleButton()" id="button1">PHP Test</button>
    <script type="text/javascript">
      function handleButton()
      {
        document.getElementById("button1").innerHTML = "PHP Test HELLO";
      }
    </script>
  </body>
</html>

此时单击该按钮与PHP无关,因为PHP已经完成了加载页面的角色。此时,如果您希望向服务器端PHP脚本发出请求,您必须使用表单,AJAX请求或IFRAME(我可以继续这里)。

我希望这会稍微清除一下,但我必须强调一下,在尝试做你想做的事情之前,你应该多做一些阅读。

祝你好运!

答案 3 :(得分:-1)

由于HTML没有意义它来自哪里(php) - 如果这个值是静态的 - 把它放在那里并且不要打扰从cleint那边执行它否则使用任何形式的AJAX - 学习它看起来谷歌

PS首先,我们将了解一下网络如何运作 - 它会在你得到它们之前解决这个和其他类似的问题

答案 4 :(得分:-1)

你最好使用之前声明的变量......(这已经过测试并且有效)

<?php
   $buttonTitle = "HELLO";
   echo 'hello';
?>

<?php
echo <<<END
<html>
<body>
<button type="button" onclick="handleButton()" id="button1">PHP Test</button>
<script type="text/javascript">
function handleButton()
{
  document.getElementById("button1").innerHTML = "$buttonTitle";
}
</script>
</body>
</html>
END;
?>