2

我试图弄清楚如何加载内容而不像 facebook 那样刷新导航栏。

如果您查看 Facebook 个人资料(不是时间线),左栏中有一个导航栏,其中包含“墙”、“信息”、“照片”、“朋友”等。

例如,当您单击“墙”时,url 变为www.facebook.com/yourid?sk=wall,中间列刷新并加载内容。但这发生在不刷新左侧导航栏(也是顶部菜单栏)的情况下。

这是如何运作的?

我正在开发一个 php 网站,它的 url 类似于这样www.example.com/profile.php?id=1234,它是带有导航栏的主页,当用户创建页面时,url 变为www.example.com/profile.php?id=1234&page=1. 如何在&page=1不刷新导航栏部分的情况下加载该内容?

=======================================

我从标题中去掉了(没有 javascript)。我认为 facebook 没有 javascript 就可以做到这一点,但我错了。

4

4 回答 4

7

首先,我很确定 facebook 为此使用了 javascript,因为它是客户端,这就是你可以做你想做的事的方式。通过禁用浏览器中的 javascript 来测试它,然后再试一次。

PHP 是服务器端,因此如果您想刷新页面的某一部分,则必须将整个页面发送回服务器,因为它将决定刷新哪个部分。

你可以做的是使用 iframe。一个带菜单的iframe,一个带内容的iframe,那么只能刷新内容的iframe。不过,由于各种原因,我并不是真正的框架粉丝。使用 Jscript 会更好:)

更新

几年来,单页应用程序(完全在浏览器中运行的 web 应用程序,无需在服务器上进行完全刷新)越来越受欢迎。

基本上,您使用 Angular 或 React 等前端 javascript 框架来编写应用程序。结果将是一个不重新加载的单页网站。

于 2012-07-10T06:24:46.890 回答
2

正如已经评论过的,这是通过 JavaScript 完成的。PHP 是一种服务器端语言,因此您的客户端可以处理这样的效果。Facebook 使用 JavaScript,其中很多是为了在他们的网站上完成各种效果。

于 2012-07-10T06:26:03.843 回答
1

我认为你可以使用 iframe 来做到这一点 - 你的主要个人资料页面将包含一个 iframe - 主 url 将是www.example.com/profile.php?id=1234,当用户点击你的链接时,只有 iframe 会重新加载 urlwww.example.com/profile.php?id=1234&page=1

导航链接将保持不变。

于 2012-07-10T06:25:02.640 回答
0
var iDiv = document.createElement('div');
iDiv.id = 'newDiv';//give u'r div an id
document.getElementsByTagName('body')[0].appendChild(iDiv); //append the div    to   your html body 
$( "#newDiv" ).insertAfter( $( "#nameOfDiv" ) ); 
                 //moving it after your desired div(which is nameOfDiv here) 
$('#newDiv').load('somePage.php'); //load desired page in newDiv 
//or 
$('#newDiv').html('some text here') 

你想让你的 url 看起来像www.example.com/profile.php?id=1234&page=1。请查看 http://tutorialzine.com/2009/09/simple-ajax-website-jquery/它非常有帮助。

于 2015-02-02T06:24:04.883 回答