【问题标题】:AJAX - Reload a part of a webpage without the use of a separate file to loadAJAX - 重新加载网页的一部分而不使用单独的文件来加载
【发布时间】:2009-01-02 16:14:54
【问题描述】:

标题可能有点混乱,所以让我解释一下。

我有一个网站,它有一个侧面板,其中包含有关用户的信息、用户可以做的事情等。当用户未登录时,该侧面板将成为登录或注册的区域。

代码如下:

<?php
if($user->loggedIn)
{
?>
<!-- side-panel for logged in users here -->
<?php
}
else
{
?>
<!-- login/registration etc -->
<?php
}
?>

我想要做的是在用户单击使用 AJAX 登录时再次加载这段代码的 sn-p,并使用 jQuery 效果(可能是淡入淡出)使侧面板从登录/注册顺利过渡到闪亮的用户- 仅限面板。

我知道如果我将该代码放在另一个文件中,并通过 AJAX 将其加载到侧面板的 div 中,我可以做到这一点......但我宁愿不为侧面板制作单独的文件。这可能吗?

【问题讨论】:

    标签: javascript jquery ajax xmlhttprequest httprequest


    【解决方案1】:

    您可以使用 AJAX 请求加载页面,然后删除侧面板以外的数据,但重点是什么?您最好的选择是将侧面板简单地分离到自己的文件中。

    哦,这也被认为是正确的做法,因此您可以编辑侧边栏而不用编辑它所在的页面。

    【讨论】:

      【解决方案2】:

      如果我完全理解你的需求,你可以试试这个方法:

      $.ajax({
          type: "GET",
          url: "url", // replace 'url' with your url
          cache: false,
          success: function(data){
              alert($(data).find('#sidebar').html());
          }
      });
      

      也许可以使用 $.load() 或 $.get(),不知道。

      【讨论】:

        【解决方案3】:

        您为什么反对将侧面板保存在自己的文件中?使事情更加模块化和有条理。

        如果您真的反对将内容保存在文件中,您可以将内容放入数据库并在进行 AJAX 调用时查询它。

        【讨论】:

          【解决方案4】:

          您能否将查询字符串参数传递给页面,然后基于该参数仅对页面进行部分渲染(仅侧边栏)? 然后只需使用普通的 jquery/ajax 方法并包含查询字符串参数。

          $.ajax(function(){
              url: MyPage.php?sidebar_only=true
              ect...
          })
          

          【讨论】:

            【解决方案5】:

            假设您将通过另一个调用获取实际的用户数据,您可以使用两个 div。包含用户面板 html 的 div 开始隐藏。成功登录后,隐藏登录 div 并显示用户面板 div。使用来自 AJAX 登录的数据,填写面板自定义信息。我假设 AJAX 登录调用将返回必要的信息来填写用户名和他们可以做什么。这样做只是为了让您不必为整个用户面板拉入 html。

            【讨论】:

            • 这不会真正起作用,因为用户面板 div 的内容很可能取决于登录的用户。例如欢迎,菲利普! -- 这不会在页面加载时自动出现在 div 中。
            • 我假设您会通过 AJAX 登录调用获取该信息。只需做一些事情,比如用跨度包围需要自定义信息的点,并使用 jquery html 调用设置这些点。因为显然没有办法预测谁会登录。
            猜你喜欢
            • 1970-01-01
            • 2021-08-28
            • 2014-09-06
            • 2015-03-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多