thinkphp中如何实现类似frame框架的效果?

clipboard.png

例如,我点击newslist时页面无刷新在右侧呈现的是新闻列表,goodslist呈现的是商品列表。
用frame做的时候可以分别做header控制器、left控制器、right控制器,用src就可以包含进来,
如果用ajax的话,怎么做呢?

阅读 6.8k
5 个回答
新手上路,请多包涵

同问,最近在做一个后台。每次点击导航栏都会整个页面刷新。

内容区域直接用 <iframe id="MainIframe" name="MainIframe" scrolling="yes" src="" noresize="" height="100%" frameborder="0" width="100%"> </iframe>
点击newslist或goodslist时获取你要显示的内容的url路径。通过JS把url赋值给<iframe>里的src="xxx.html"
如 :
$("#newslist").click(function(){

 url  //要显示的内容的url
 parent.MainIframe.location = url;

})

与tp无关,我个人是不太喜欢用iframe的。
用tp做后台可以用布局,或者直接include公共文件也可以。
当然,也可以考虑直接通过ajax获取数据,模板通过vue.js来实现。

但如果要用iframe的话,记忆中可以不用js实现修改iframge的src属性的方法,于是百度了一下,给个demo:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
.col{float:left;}    
</style>    
</head>
<body>
<div class="col" style="width:20%;">
    <ul>
        <li><a href="http://www.baidu.com" target="to">百度一下</a></li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
        <li><a href=""></a></li>
    </ul>
</div>
<div class="col" style="width:80%;">
<iframe src="" frameborder="0" name="to" style="width:100%;height:100%;"></iframe>    
</div>
    
</body>
</html>

导航里的a标签加个target="name"
iframe加个name="name"
就可以了。

一样做,只是原本display模板的地方,变成返回json数据,而在前端处理这些json数据,将数据以某种形式呈现到指定的HTML容器中。

比如在内容区域你有两个div,分别为#newscontainer#goodscontainer,当点击newslist时显示#newscontainer层,隐藏#goodscontainer,点击goodslist则相反。

你可以只用ajax请求一次数据初始化后只做隐藏层的切换,或者每点击一次都请求一次,全看你的业务需求。

甚至你也可以使用相同的容器来呈现不同的内容。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题