Ajax原型加载页面然后更新哈希

时间:2010-09-08 21:54:31

标签: ajax hash prototypejs scriptaculous

我有3页不同的概念/布局/动画。

我正在使用原型和放大器script.aculo.us

我在导航中有这个:

<ul>
<li><a href="#page1" id="page1" onClick="showPage(page1);">PAGE1</a></li>
<li><a href="#page2" id="page2" onClick="showPage('page2');">PAGE2</a></li>
</ul>

这是我的js:

windows.location.hash: 'web';

function showPage() {
startloading();
var url: '/localhost/page2'+web;
new Ajax.Updater('maincontent', 'page2', { method: 'get' });
finishloading();
}

问题&amp;问题是:

  1. 为什么在windows位置哈希仍然是:/ localhost / page1 /#page2有或没有,如果我使用var url?
  2. 第2页中的所有动画都不起作用,因为我没有放入标题,但如果把它放进去,我会得到双标题,但动画也无法正常工作。
  3. 有人可以给我解决方案吗?

    非常感谢。

2 个答案:

答案 0 :(得分:0)

更新哈希的正确方法是:

window.location.hash = '#'+yourValue;

很难说出你正在尝试用你的功能做什么,但有一些事情显然有点不对劲。

function showPage(var) { 
    startloading();
    var url: '/localhost/page'+var;
    new Ajax.Updater('maincontent', url, { method: 'get' });
    finishloading();
}

取决于你实际上在做什么,你很可能想要更像这样的东西:

function showPage(var) {         
    var url = '/localhost/page'+var;
    new Ajax.Updater('maincontent', url, { method: 'get' ,
        onCreate: function(){
            startloading();
        },
        onComplete: function(){
            finishloading();
        }
    });
}

但这完全是猜测,如果你能提供更多细节,我可以提供更多帮助。

答案 1 :(得分:0)

在您的代码中

var url: '/localhost/page2'+web;

行抛出错误,因此无法更改哈希。将其修复为

var url = '/localhost/page2'+web;

然后它应该工作。