代码之家  ›  专栏  ›  技术社区  ›  Logan Serman

AJAX-在不使用单独文件加载的情况下重新加载网页的一部分

  •  1
  • Logan Serman  · 技术社区  · 17 年前

    标题可能有点令人困惑,所以让我解释一下。

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

    此代码为:

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

    我想做的是,当用户使用AJAX点击登录时,再次加载这段代码,并使用jQuery效果(可能是淡入淡出),使侧面板从登录/注册平滑过渡到闪亮的用户专用面板。

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

    5 回复  |  直到 17 年前
        1
  •  3
  •   Salty    17 年前

    你可以用AJAX请求加载页面,然后去掉侧面板以外的数据,但这有什么意义呢?您最好的选择是简单地将侧面板分离到自己的文件中。

    哦,这也被认为是正确的方法,所以你可以编辑侧边栏,而无需编辑它所在的页面。

        2
  •  0
  •   Ionuț Staicu    17 年前

    如果我正确地理解了你需要什么,你可以这样尝试:

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

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

        3
  •  0
  •   barfoon    17 年前

    你为什么反对把侧板放在自己的文件里?使事物更加模块化和有序化。

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

        4
  •  0
  •   Corey Downie    17 年前

    您能否将查询字符串参数传递给页面,然后在此基础上仅对页面进行部分呈现(仅侧边栏)? 然后,只需使用正常的jquery/ajax方法并包含查询字符串参数。

    $.ajax(function(){
        url: MyPage.php?sidebar_only=true
        ect...
    })
    
        5
  •  0
  •   Philip Tinney    17 年前

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