在页面底部检查isset不起作用

时间:2017-02-19 06:23:37

标签: javascript php html

我陷入两难境地(我还没有找到解决办法)。出于某种原因, PHP 不想检查我的文档中$_POST["login"]标记底部的<body>

如果它放在文档的最顶部,甚至放在<body>标记的顶部,它将起作用。但是,如果我将其放在文档/ <body>标记的顶部,则输出 JavaScript 将不会执行!

例如,这是文档( PHP 不会执行的地方):

<form>
    <span id="example-element">Displaying.</span>
    <input type="text" name="example">
    <button type="submit" name="login">Login</button>
</form>
<?php
    if(isset($_POST["login"])){
        echo "
        <script>
            document.getElementById('example-element').style.display = 'block';
        </script>"
    }
?>

但是,如果我要做这样的事情( PHP 将执行):

<?php
    if(isset($_POST["login"])){
        echo "
        <script>
            document.getElementById('example-element').style.display = 'block';
        </script>"
    }
?>
<form>
    <span id="example-element">Displaying.</span>
    <input type="text" name="example">
    <button type="submit" name="login">Login</button>
</form>

但由于 JavaScript 的编译方式,它会抛出错误,说明它无法在null元素上设置样式。

我不知道如何解决这个难题,所以所有的帮助都表示赞赏!

干杯。

3 个答案:

答案 0 :(得分:2)

<form>
    <span id="example-element">Displaying.</span>
    <input type="text" name="example">
    <button type="submit" name="login">Login</button>
</form>

<?php
    if(isset($_GET["login"])){
        echo "<script>
        document.addEventListener('DOMContentLoaded', function(){
             document.getElementById('example-element').style.display = 'block';
        }, false);           
        </script>";
    }
?>

检查这是否有效.....我已在DOMContentLoaded事件中添加了显示代码,并将$_POST变量更改为$_GET。在我的本地系统中正常工作。

答案 1 :(得分:0)

您可以按照以下方式执行此操作

<style>
.someClass {
    display: block;
}
</style>

<?php
    if(isset($_POST["login"])){
        $hasClass = true;
    }
?>

<form method="post">
    <span id="example-element" class=<?php if(isset($hasClass)==true) echo "someClass"; ?> >Displaying.</span>
    <input type="text" name="example">
    <button type="submit" name="login">Login</button>
</form>

您的代码的另一个问题是您没有设置表单的方法,默认情况下它是GET,而在php中您正在寻找POST请求。 你可以通过在php中使用$_REQUEST来解决它,当你不确定该方法时。

答案 2 :(得分:0)

实际上php在javascript之前执行。

像这样改变

    <script>
        var isSubmit = "<?php isset($_POST['login'])?true:false; ?>";
        if(isSubmit){
        document.getElementById('example-element').style.display = 'block';
        }
    </script>"