基于Javascript条件执行PHP代码


Execute PHP code based on Javascript conditional

我不确定我想做的事情对你来说是否有意义,但给你。我正在尝试执行if/else。这是我想做的一个例子。

<?php
if //Here I would like to execute <script></script> 
{
// Then here execute some php code
}
else
{
//do nothing
}
?>

我不知道这样的事情是否可能。

不,您不能按照建议的方式使用JS执行PHP代码。PHP被编译并在服务器上提供,然后发送到网络上。这就是网站"前端"answers"后端"组件背后的理念。

然而,您可以使用JS(谷歌"AJAX")向服务器发出请求,JS可以执行您想要的任何类型的后端语言。然后,当您的后端响应时,您可以告诉JS更改DOM,或者做任何您想做的事情。

希望能有所帮助!

使用AJAX执行此操作的一个示例是以下jquery代码:

<script type="text/javascript" src='yourotherfile.js'></script>
<script type="text/javascript">
if (functionFromOtherFile()) {
    $.get('somephpfile.php', function(data) {
         $("#output").text(data);
    }
} else {
    $.ajax({
        url: "somethingelse.php",
        context: $("#output")
    }).done(function() {
        alert("Request completed.");
    });
}
</script>

在"原型"中,它看起来像:

<script type="text/javascript">
new Ajax.Request('somephpfile.php', 
{ 
    method: 'get',
    onSuccess: function(data) {
      // do something with data.responseText
    }
});
</script>

根据您的评论,我想说可能对Javascript和PHP的工作方式或交互方式有点误解。

这就像一个名为PHP的披萨外卖服务:你可以点一个上面有火腿的披萨,但外卖小哥一到你家门口,点菠萝就太晚了。你可以在家里对披萨做一些改变,比如吃它,但不会有菠萝。基本上,你最初的帖子会是"告诉外卖小哥吃披萨",或者用另一种方式说——这行不通。

你可以点一个新披萨(这就是我的例子),或者雇佣另一个快递员把你的菠萝片寄给你(这就是AJAX方法)。

你不必使用AJAX。您可能想尝试一下(index.php),并检查这种行为是否对您有用。

此示例的特点是:

  • 对客户端条件的评估
  • 基本DOM操作
  • 使用隐藏字段将数据传输到服务器后端
  • 服务器端传输数据的评估
  • 无效的HTML标记和其他非最佳实践用法

[…]

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <title>Simple JavaScript Example</title>
</head>
<body>
  <h2>This is some test</h2>
  <form action="index.php" method="get">
      <input type="hidden" name="condition" />
      <input type="submit" value="Do something" />
  </form>
  <script type="text/javascript">
    <?php
        if ($_GET["condition"]!="blueconditionistrue"){
    ?>
            document.body.style.backgroundColor = "rgb(0, 0, 255)";
    <?php
        } else { echo "alert('That blue was awful, I fixed it for you');"; }
    ?>
    if (document.body.style.backgroundColor == "rgb(0, 0, 255)"){
        document.forms[0].condition.value = "blueconditionistrue";
    }
</script>
</body>
</html>

可能。

<?php if(true):?>
<script>
//js  goes here
</script>
<?php else:?>
//other
<?php endif?>