我想用javascript而不是单个页面动态更改主要内容

时间:2017-01-05 13:26:52

标签: javascript php jquery html css

我的网站目前正在使用.tpl模板文件动态加载不同的页面。这将再次加载整个页面,所以标题,侧边栏(聊天),主要内容和页脚。

在我的index.php文件中有一个开关案例,当你点击菜单中的'home'时,它会加载页面'home'。 (实施例)

但我不希望如此。因为他们也是侧边栏中的聊天,并且重新加载/重置eveytime,您加载了不同的页面。所以以前的所有消息都将消失。所以我想要的只是改变主要内容部分。因此标题,侧边栏和页脚将保留,不会重新加载。

我尝试用javascript做但但是没有用... 有人可以帮助我或至少让我走上正确的道路吗?

(是的,我一直在搜索stackoverflow和谷歌的最后一小时,但找不到任何东西......)

2 个答案:

答案 0 :(得分:0)

请遵循以下说明:

  1. 为页眉,页脚,侧边栏和内容文件创建单独的.tpl文件。
  2. 在主文件中包含页眉,页脚,侧边栏和左侧的内容部分。 3.使用ajax调用替换.tpl(使用id或class)文件内容。
  3. 将您的网址与功能绑定。

    示例代码如下:

    // sidebar.php

        <ul>
        <li><a onclick="changePage(this)" data-page="home.tpl">Home</a></li>
        <li><a onclick="changePage(this)" data-page="aboutus.tpl">About Us</a></li>
        </ul>
    

    // master.php

         <?php 
               include("header.php");
               include("sidebar.php");
              ?>
               <section id="fileContent">
               </section>
            <?php   include("footer.php");
             ?>
    <script href="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
        <script>
             function changePage(obj)
             {
                var Filename=$(obj).data('page')
                $.get(Filename, function( data ) {
                   $( "#fileContent" ).html(data);
                 });
             }
        </script>
    

答案 1 :(得分:0)

您需要的是AJAX(使用Ajax,Web应用程序可以异步(在后台)向服务器发送数据和从服务器检索,而不会干扰现有页面的显示和行为。)

要使用ajax,您需要使用Javascript将请求发送到PHP文件,该文件加载包含主要内容的智能模板并将html代码插回页面:

<?php
//some-php-file.php
include("Smarty.class.php");
$smarty = new Smarty;
$smarty->display("main_content_part.tpl");
?>

//link on 'home' site
<a href="#" id="ajaxHomeBtn">Home</a>

//javascript(jquery) ajax request
$('#ajaxHomeBtn').click(function(e){
  e.preventDefault();
  $.get("some-php-file.php", function(smarty_html_data) {
    $(".main-content").html(smarty_html_data);
  });
});