获取引导模式以在查询失败时运行

时间:2018-03-19 16:59:17

标签: php jquery html

如果用户输入已存在的用户名,我正在尝试显示模式。我正在使用PDO执行查询,我使用if($var->rowCount() > 0)来检查用户名是否已经存在,我还存储了一个名为$modalHead的变量来存储应该为模态显示的字符串head以及$modalMsg作为应该用于模态内容的文本,可以在下面找到它们的使用:

<div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title"><?php echo $modalHead; ?></h4>
        </div>
        <div class="modal-body">
          <p><?php echo $modalMsg; ?></p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>

但是,当PHP if语句为true时,我遇到了尝试触发jQuery代码的问题。我试过像这样回复php里面的代码:

echo '<script> SHOW MODAL WITH JQUERY </script>';

我还尝试存储一个变量,例如$showModal,其值为true或false。然后我尝试使用var show = "<?php echo $showModal; ?>"获取此值并尝试检测该值,但是,也未能显示模态。我唯一的运气就是我早些时候出现它但是提交页面刷新使它在页面重新加载之前完全显示出来。我也玩过这样的想法,即我可以将用户重定向到像register.php?error=...这样的东西来检测何时应该显示模态。 任何有助于解决这个问题的帮助都将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:0)

由于模块正在等待用户输入,并且检查是在服务器端完成的,因此最好的方法是使用JQuery执行post请求,并根据PHP页面返回的结果加载模块。

在您的客户端页面(html / js)

<script>
   $("#submit").click(function({
      $.ajax({
       method: "POST",
       url: "some.php",
       data: { username: "username", password: "password" }
   })
  .done(function( msg ) {
       if(msg=="0"){
         $(".modal-title").html("Registration Error!");
         $(".modal-body p").html("Username already exists!");
         $("#modal").show();   
       }else{
          //redirect here
        }
  });
 });
</script>

并在你的some.php文件中

//Query here
//depending on query result echo 0 if error and 1 if success

答案 1 :(得分:0)

找到解决方案! 我这么做就是说像重复的用户名,我做了它,所以它重定向到页面+?error =然后给每种类型的错误提供了一个唯一的错误代码。然后我使用javascript函数来获取错误ID,然后显示适合错误的模式。我在body load上运行了这个函数,还添加了onclick到模态的关闭按钮来运行一个函数,该函数重定向回到没有的页面?error =

感谢大家的帮助!