我的网站目前正在使用.tpl模板文件动态加载不同的页面。这将再次加载整个页面,所以标题,侧边栏(聊天),主要内容和页脚。
在我的index.php文件中有一个开关案例,当你点击菜单中的'home'时,它会加载页面'home'。 (实施例)
但我不希望如此。因为他们也是侧边栏中的聊天,并且重新加载/重置eveytime,您加载了不同的页面。所以以前的所有消息都将消失。所以我想要的只是改变主要内容部分。因此标题,侧边栏和页脚将保留,不会重新加载。
我尝试用javascript做但但是没有用... 有人可以帮助我或至少让我走上正确的道路吗?
(是的,我一直在搜索stackoverflow和谷歌的最后一小时,但找不到任何东西......)
答案 0 :(得分:0)
请遵循以下说明:
将您的网址与功能绑定。
示例代码如下:
// 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);
});
});