如何在使用JS的window.location时回显PHP?

时间:2018-05-02 17:40:52

标签: javascript php html css

这是我的问题。 我正在建立一个网上商店,对于我的提醒和通知,我使用三种类型的divs(它们只有背景颜色不同),在3-4秒后消失。标记基本上如下:

HTML

<div class='alert-warning'>
   Email already in use!
</div>

CSS

.alert-warning{
   background-color: rgba(255,193,7,.75);
   border-radius: 30px;
   top: 10%;
   right: 10%;
   position: absolute;
   padding: 1em;
   font-size: 1em;
   color: #eee;
   z-index: 502;
}

现在,我遇到的问题:当用户输入已经使用过的电子邮件时,我的小警告div应该出现在右上角,就像他试图添加到购物车时一样尚未登录。 see the picture

当用户输入已经在使用的电子邮件时,我将页面重定向以再次向他显示我的注册框,即在url = index.php?show=register中,所以我得到了回应。问题是如果我在重定向之前回显我的div,它会在很短的时间内出现,然后页面会重定向,如果我之后再说它就永远不会出现。

PHP

elseif($already_registered){
                    echo '<script>window.location="index.php?show=register"</script>';
                    ?>
                        <div class='animated fadeInUp alert-warning'>
                            This e-mail is already in use.
                        </div>
                    <?php

                }

我是一名高中毕业生,这是我第一次使用PHP进行这种规模的项目,所以我还不熟悉它。我希望我的问题很清楚。提前谢谢。

2 个答案:

答案 0 :(得分:0)

只需在重新定位中添加延迟。

<script>setTimeout(function(){window.location="index.php?show=register"}, 5000)</script>

这种方式window.location将在5000毫秒(5秒)后触发

更新

要在重定向后显示它,您需要将代码更改为以下内容:

elseif($already_registered){
  echo '<script>window.location="index.php?show=register&redirected=1"</script>';
}

注意&redirected=1部分。这是要知道我们被重定向并且必须输出消息

现在在index.php文件中添加

if(isset($_GET["redirected"])){
  <div class='animated fadeInUp alert-warning'>
      This e-mail is already in use.
  </div>
}

这样我们确认我们被重定向并显示消息

答案 1 :(得分:0)

当评估脚本时,用户将被带到另一个页面,因此“重新定向后回显”将不会为您做任何事情。

如果您要坚持使用这条路线,而不是使用像AJAX调用这样的东西,我建议您在index.php中添加一个参数(就像show中一样),它可以让您指定重定向的原因。 / p>

index.php?show = register&amp; emailUsed = true的内容足以告诉您需要显示错误以及注册页面,例如index.php?show = register&amp;如果您有许多条件要进行分类,则error = emailUsed将会有所帮助。