是否可以在不加载页面的情况下刷新div?

时间:2013-09-12 03:20:47

标签: php jquery html refresh

已解决 - 排序---

window.location.reload();在我的代码中,我有提交按钮关闭div,工作。

// Collapse Panel on submit
$("div#panel").on('submit', function() {
window.location.reload();
$("div#panel").slideUp("slow");
$("#toggle a").toggle();

return false;
});

我一直在寻找这个答案,每次都让我感到更加沮丧。

情景:

  1. 我有一个为了登录目的滑下来的div(jquery,css)。

  2. 该div中的登录表单本身最初是使用PHP动态创建的(通过基于SESSIONS中的值的if else语句 - PHP echo加载表单)。

  3. 3.如果我输入了正确的登录名并单击“提交”,我将div关闭(jquery on(submit)),以便用户可以看到该页面。该页面使用xajax / PHP函数从php文件加载动态内容。

    4.PROBLEM - 如果我点击重新打开div它仍会显示我的登录表单。(因为页面没有重新加载)。但我的页面导航栏完成了xajax / PHP重新加载以显示正确的菜单功能。

    1. 我的问题是我想在提交后将div改为REFRESH,或者在任何事件改变时如果有帮助,那么它会看到NEW SESSION数据并相应地进行调整。我不想将另一个HTML页面加载到DIV中,所以加载(whatever.html)并不是我想要的。
    2. 如果我在登录后使用f5刷新整个页面并下拉div,则登录表单将不会出现,因为我的SESSIONS现在声明我是登录用户而不再是需要登录的访客。 div不仅仅用于登录,它将包含其他链接和快捷方式,因此在您访问期间将使用它。

      index.php

      <div id="left" class="left">
      
               <?php      if(isset($_SESSION['admin'])){
              if($_SESSION["admin"] == "1") {
                  echo "YOU ARE LOGGED IN AS AN ADMIN";
              }
          }
      
          if(isset($_SESSION['userID'])){
              echo "YOU ARE LOGGED IN AS A USER";
          }
      
          else { echo  '<form class="clearfix" id="loginForm" name="loginForm" action="javascript:void(null)" onsubmit="xajax_login(xajax.getFormValues(\'loginForm\'));">'; 
      

      slide.js

      $(document).ready(function() {
      
      // Expand Panel
      $("#open").click(function(){
          $("div#panel").slideDown("slow");
      
      }); 
      
      // Collapse Panel
      $("#close").click(function(){
          $("div#panel").slideUp("slow");
      
      }); 
      
      // Switch buttons from "Log In | Register" to "Close Panel" on click
      $("#toggle a").click(function () {
          $("#toggle a").toggle();
      }); 
      
      
      // Collapse Panel on submit
      $("div#panel").on('submit', function() {
      $("div#panel").slideUp("slow");
      $("#toggle a").toggle();
      return false;
      });
      // if there is an error, close div and allow link on main content page to be clicked to reopen div
      $("#content").on('click', "#tryAgain",function() {
          $("div#panel").slideDown("slow");
          $("#toggle a").toggle();
      }); });
      

3 个答案:

答案 0 :(得分:0)

即使使用纯JavaScript,也很容易完成,不需要jQuery。

只需创建一个JS函数来重置表单或div中的输入字段,并在每次需要“刷新”div或表单的内容时调用它。

如果您粘贴div定义,我们可以为您提供更具体的建议,并附带实际执行此操作的JS代码。

答案 1 :(得分:0)

好吧,如果你在页面加载时将值加载到表单中,那么当表单通过ajax提交时,它们就会存在。你真正需要做的是在div首先“关闭”时清除表单值。

$(#formselector).on('submit',function(){
    //your ajax login and page load code

   //then:
   $('#formselector').find('input').attr('value','');

});    

更新

根据您的评论,您真正需要做的是在首先弹出表单之前检查用户是否确实已登录。有一些技术可以做到这一点,但我建议你在表单提交的php脚本中,在处理登录之前,检查你的$_COOKIE变量以查看用户是否被识别。这还需要修改您的登录脚本,以确保它将用户数据存储在$_COOKIE中,类似于它在&_SESSION变量中存储数据的方式。

此时,您的php脚本将根据用户状态提供两个不同的响应,并且启动表单下拉列表的javascript代码将在显示登录表单之前检查它是否获得“用户未找到”响应

答案 2 :(得分:0)

要刷新特定div的内容,请使用以下内容:

$(&#34;#abc&#34;)。load(location.href +&#34;#abc&gt; *&#34;,&#34;&#34;)

其中#abc用于div的目标。