使用jQuery在页面重定向后显示DIV


Show a DIV after Page Redirect with jQuery

document就绪时,我有一个div设置为hide()。我希望这个div在包含的div可见时出现。我还有一个接受用户输入的表单。表单被重定向到其页面action ="<?php echo htmlentities($_SERVER['PHP_SELF']);?>"提交有一个类.submitRecord。成功将记录提交到DB后,包含的div将可见。

PHP代码:

if (isset($_POST['submitRecord']) && $success != ''){
    echo "<div class='containingDiv'>";
       echo "<div class='alloc'>";
         echo "<p class = 'closeButton'> x </p>";
         echo "<p class = 'allocationSuccess'>Allocation Successful for Mr/Mrs ABC</p>";
       echo "</div>";
    echo "</div>";
    };

jQuery代码:

$(document).ready(function(){
  $('.containingDiv, .alloc').hide();
  $(document).on('click', '#saveRecord', function () { 
    if ($(".containingDiv").is(':visible')){
        $('.alloc').slideDown(500);
    }
  });
 $(document).on('click', '.closeButton', function () { 
    $('.alloc').hide(500);
  });
});

表单被提交,var $success被分配了一个字符串,但.alloc不会显示。

任何帮助都将不胜感激。

根据您的标题,您使用的是普通表单提交(无ajax(。这意味着事件的流程类似于:

  • 您的按钮被点击
  • 您的javascript函数被触发,试图为不在页面上的div设置动画
  • 访问者被重定向到提交表单的页面,即使有动画,访问者也不会因为重定向而看到它
  • 处理表单并显示新页面(此处未触发javascript onClick事件(
  • 成功的div被添加到页面中,但保持隐藏状态

有两种解决方案:

  1. 您使用ajax提交表单,将所有内容保持在同一页面中,并为您想要的内容设置动画
  2. 您在成功页面上显示成功框,而不是在页面加载时隐藏它,并且只在单击某个timeOut或按钮后隐藏它。请注意,您不必在页面加载时隐藏该框,因为它只会在成功提交表单时添加到页面中