Php 防止一个div重新加载

Php 防止一个div重新加载,php,javascript,jquery,html,Php,Javascript,Jquery,Html,基本上,我想要的效果与我认为的老式html“框架集”一样 请看一下这一页: 例如,如果用户从industry->transportation中选择一个项目,我希望右滚动菜单在新项目页面出现时保持其初始状态。这样他们就不会迷路,必须再次单击才能进入同一子菜单部分 所以,正确的缩略图导航应该保持相同的方式,我不希望它重新加载 我必须用相框还是iFrame?或者我可以对“不重新加载”该div进行某种jQuery调用吗?也许是PHP?对不起,我不是一个程序员从起源 更新: 伙计们,我设法把整个缩略图导

基本上,我想要的效果与我认为的老式html“框架集”一样

请看一下这一页:

例如,如果用户从industry->transportation中选择一个项目,我希望右滚动菜单在新项目页面出现时保持其初始状态。这样他们就不会迷路,必须再次单击才能进入同一子菜单部分

所以,正确的缩略图导航应该保持相同的方式,我不希望它重新加载

我必须用相框还是iFrame?或者我可以对“不重新加载”该div进行某种jQuery调用吗?也许是PHP?对不起,我不是一个程序员从起源

更新: 伙计们,我设法把整个缩略图导航代码放到一个单独的php文件中,名为sidebar.php。现在在我的single.php Wordpress中调用它

现在让这个sidebar.php在页面重新加载时不刷新是否更容易?我一直在看cookies,php会话,iFrame。。但我不能让它工作


任何更多的帮助都将不胜感激

为了优化,Facebook在没有框架的情况下做了这件事。他们获取每一个链接,如果支持的话,使用AJAX加载页面内容而不重新加载布局

显然,这类事情可能需要对应用程序的内部进行重大重组。另一种选择是将菜单状态存储为链接上的cookie,单击查看,在每次重新加载时,让Javascript查看cookie并动态将菜单恢复到正确状态,或者使用内部PHP读取cookie并决定显示哪个菜单


但如果你真的绝望了,你可能会回到画面上。有时候这也没关系,但是先试试其他的方法:

为了优化,Facebook在没有框架的情况下也会这样做。他们获取每一个链接,如果支持的话,使用AJAX加载页面内容而不重新加载布局

显然,这类事情可能需要对应用程序的内部进行重大重组。另一种选择是将菜单状态存储为链接上的cookie,单击查看,在每次重新加载时,让Javascript查看cookie并动态将菜单恢复到正确状态,或者使用内部PHP读取cookie并决定显示哪个菜单


但如果你真的绝望了,你可能会回到画面上。有时也可以,但请先尝试其他方法:

您还可以检测到由于单击相应链接而收到页面请求的菜单项被激活,并使用此信息还原/选择此菜单项


至少我是这么做的。。。不需要cookies或AJAX

您还可以检测由于单击相应链接而收到页面请求的菜单项被激活,并使用此信息还原/选择此菜单项


至少我是这么做的。。。不需要cookies或AJAX

您可以使用一种称为AHAH异步HTML和HTTP的技术。实际上,您正在执行jQuery

$.post("whatever.html",function(data) {
       $("contentdivelement").html(data);
} 
您可以将其封装在如下函数中:

updateContent(sPage) {
   $.post(sPage,function(data) {
       $("contentdivelement").html(data);
} 
}
这将把框架页面中的内容加载到div中,而无需重新加载页面

您还可以绑定到每个导航链接,并将其HREF用作加载到内容div中的路径,例如:

$(".menuLink").click(function() {
   var menuLink = $(this).attr('href');

   updateContent(menuLink);

   /* prevents the browser from taking the parent to that link */
   return false;

});
补充: 您的菜单可能如下所示:

<ul class="myMenu">
   <li><a href="frame1.html" class="menuLink">Frame 1</a></li>
   <li><a href="frame2.html" class="menuLink">Frame 2</a></li>
</ul>

您可以使用一种称为AHAH异步HTML和HTTP的技术。实际上,您正在执行jQuery

$.post("whatever.html",function(data) {
       $("contentdivelement").html(data);
} 
您可以将其封装在如下函数中:

updateContent(sPage) {
   $.post(sPage,function(data) {
       $("contentdivelement").html(data);
} 
}
这将把框架页面中的内容加载到div中,而无需重新加载页面

您还可以绑定到每个导航链接,并将其HREF用作加载到内容div中的路径,例如:

$(".menuLink").click(function() {
   var menuLink = $(this).attr('href');

   updateContent(menuLink);

   /* prevents the browser from taking the parent to that link */
   return false;

});
补充: 您的菜单可能如下所示:

<ul class="myMenu">
   <li><a href="frame1.html" class="menuLink">Frame 1</a></li>
   <li><a href="frame2.html" class="menuLink">Frame 2</a></li>
</ul>

我建议使用稍微不同的方法,而不是使用单击处理程序更新内容。只需将超链接替换为此类链接:

 #info_page
现在设置一个简单的间隔,读取当前URL并相应地更新DIV:

__LOC = document.location.href;
 setInterval(function(){
 if (__LOC!=document.location.href) __LOC=document.location.href;
  var fetchURL = __LOC.split("#")[1];
  $.get( "/getcontent/"+fetchURL, function(d){ $("#mydiv").html( d ); } )
 } 1000);

这也允许访问者使用书签。

我建议使用稍微不同的方法,而不是使用单击处理程序更新内容。只需将超链接替换为此类链接:

 #info_page
现在设置一个简单的间隔,读取当前URL并相应地更新DIV:

__LOC = document.location.href;
 setInterval(function(){
 if (__LOC!=document.location.href) __LOC=document.location.href;
  var fetchURL = __LOC.split("#")[1];
  $.get( "/getcontent/"+fetchURL, function(d){ $("#mydiv").html( d ); } )
 } 1000);

这也允许访问者使用书签。

jQuery使生活变得非常简单,如果你能让你的应用程序吐出适当的XML,让它读取并填充你的页面。快速提问:XML是指页面HTML还是一般结构化数据?虽然后者可能很简单,但它依赖于Javascript,这是你永远不希望成为基本导航的东西。Cookie的东西听起来不错,但是我已经看过了,我自己也不是一个足够好的程序员。。你能帮我清理一下我的网站吗?谢谢…今天不行,对不起。我的盘子里有太多了

. 学习它或者雇佣一个可以:@Josh:在上读一点,然后在谷歌上搜索一点。使用它们并不难。如果你能让你的应用程序吐出适当的XML,让它读取并填充你的页面,jQuery会让生活变得非常简单。快速提问:XML是指页面HTML还是一般结构化数据?虽然后者可能很简单,但它依赖于Javascript,这是你永远不希望成为基本导航的东西。Cookie的东西听起来不错,但是我已经看过了,我自己也不是一个足够好的程序员。。你能帮我清理一下我的网站吗?谢谢…今天不行,对不起。我的盘子里有太多了。学习它或者雇佣一个可以:@Josh:在上读一点,然后在谷歌上搜索一点。使用它们并不难。我不完全理解菜单流程,我很累,但听起来有不止一种方法可以到达给定的部分,这就是为什么他无法确定运行时出现了哪个菜单。或者他可以,而这只是他还没有想到?…确切地说,不止一种方法。因此,当用户通过“industry”子菜单选择一个项目时,我获得了jScrollPane插件,可以在pageload中将其自动克隆到当前项目。只有在第一个子菜单“name”中,而不是在他从“industry”中选择的子菜单中。这就是为什么我认为不重新加载那个DIV会更容易,就像一个帧一样。这可能通过你的解决方案吗?啊。。。这个解决方案只有在只有一种方式到达某个项目时才有效:我不清楚有多种方式。我不完全理解菜单流程,我很累,但听起来有不止一种方式到达给定的部分,这就是为什么他无法确定运行时出现了哪个菜单。或者他可以,而这只是他还没有想到?…确切地说,不止一种方法。因此,当用户通过“industry”子菜单选择一个项目时,我获得了jScrollPane插件,可以在pageload中将其自动克隆到当前项目。只有在第一个子菜单“name”中,而不是在他从“industry”中选择的子菜单中。这就是为什么我认为不重新加载那个DIV会更容易,就像一个帧一样。这可能通过你的解决方案吗?啊。。。此解决方案仅适用于只有一种方式访问项目的情况:我不清楚是否有多种方式。为什么要使用POST请求而不是GET?为什么不使用$'el'.load;我总是使用POST的原因是一些浏览器缓存GET请求,这将导致动态内容也被缓存。只是让它更容易。无论是POST还是GET,结果都是一样的。欢迎Josh尝试这两种方法。此外,.load函数本质上与.post或.get函数的作用完全相同。在我看来,这两方面都无关紧要。非常感谢你的回复。听起来不错,我正在努力理解,但恐怕我是一个编码高手。你能给我解释一下我将如何在我现有的代码中应用它吗?我的菜单——以及整个网站——是从Wordpress数据库动态生成的,但这不会有什么区别,对吗?谢谢。不,绝对没关系。jQuery很好,因为您可以绑定到页面上的任何元素,而无需深入挖掘每个元素上的onClick事件和内容。我推荐的另一个功能是使用jQuery.live事件处理元素,这些元素根据您所处的页面来来去去去。您可以将$.menuLink.click替换为$.menuLink.liveclick,函数{};因此,它将捕获动态添加到菜单中的任何新链接。为什么要使用POST请求而不是GET?为什么不使用$'el'.load;我总是使用POST的原因是一些浏览器缓存GET请求,这将导致动态内容也被缓存。只是让它更容易。无论是POST还是GET,结果都是一样的。欢迎Josh尝试这两种方法。此外,.load函数本质上与.post或.get函数的作用完全相同。在我看来,这两方面都无关紧要。非常感谢你的回复。听起来不错,我正在努力理解,但恐怕我是一个编码高手。你能给我解释一下我将如何在我现有的代码中应用它吗?我的菜单——以及整个网站——是从Wordpress数据库动态生成的,但这不会有什么区别,对吗?谢谢。不,绝对没关系。jQuery很好,因为您可以绑定到页面上的任何元素,而无需深入挖掘每个元素上的onClick事件和内容。我推荐的另一个功能是使用jQuery.live事件处理元素,这些元素根据您所处的页面来来去去去。您可以将$.menuLink.click替换为$.menuLink.liveclick,函数{};因此,它将捕获动态添加到菜单中的任何新链接。