我陷入两难境地(我还没有找到解决办法)。出于某种原因, 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
元素上设置样式。
我不知道如何解决这个难题,所以所有的帮助都表示赞赏!
干杯。
答案 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>"