jQuery深层链接&在多个容器(子容器)中加载ajax

时间:2010-01-28 21:38:25

标签: jquery ajax load history deep-linking

我目前正在开发一个网站并遇到了问题..(ajax加载存储的网址)以为有人可以提供帮助..

首先是示例页面布局:

<div id="main-container">
  <div id="top-menu">
    <a href="/link1" rel="ajax" />Link 1</a>
    <a href="/link2" rel="ajax" />Link 2</a>
  </div>
  <div id="content">
    <div id="results">
    <!-- category results go here -->
      <a href="/link1/category/cat-1/page/1" rel="ajax" />page 1</a>
      <a href="/link1/category/cat-2/page/2" rel="ajax" />page 2</a>         
    </div>
    <div id="categories">
      <a href="/link1/category/cat-1" rel="ajax" />cat 1</a>
      <a href="/link1/category/cat-2" rel="ajax" />cat 2</a>     
    </div>
  </div>
</div>

如果我想通过点击链接加载内容,一切都很好..当我想启用历史记录支持(创建深层链接网址)时,困难部分就开始了。

如果给出完整的网址,我无法弄清楚如何加载必要的部分,例如

site.com/link1.html#/category/cat-1/page/

我有一些想法:

  1. 每个链接都有一个属性,告诉您加载内容的位置
  2. 将网址发送给某个控制器,该控制器会发送有关加载位置的数据
  3. 哈希有多个部分,可以拆分成数组,然后加载每个部分
  4. 那么结果应该有点像facebooks导航,你可以在主页,消息,朋友列表之间导航而不刷新页面..然后在每个地方你可以通过子链接导航..

2 个答案:

答案 0 :(得分:1)

tnx :)看了一下..它是一个非常好的插件,然而,在思考了一下我想出了我失踪的部分..(可能应该包括js代码)

var hash = window.location.hash.substr(1);
var href = $('a[rel=ajax]').each(function(){
    var href = $(this).attr('href');
            var where = $(this).attr('test');
            //alert(where);
    if(hash==href.substr(0,href.length-5)){
        var toLoad = hash+'.html';
        $('#content_full').load(toLoad)
    }                                           
});

如果找到哈希值(在页面加载后),则会调用这些行。(我想让脚本太高级了......而不是使用加载数据的默认容器,我想采取来自网址的位置..(不要问为什么......))

所以现在一切都应该工作得很好:)(我将为每个ajax链接添加一个变量,关于它应该加载到哪个部分,然后将这个数据发送到php脚本,这将输出必要的数据(只需要部分),如果不设置此var,则脚本将输出完整内容)

答案 1 :(得分:0)

查看Ben Alman's BBQ: Back Button & Query Library Plugin

使添加后退按钮支持变得非常简单