JQuery Ajax 在URL中添加哈希值

11

我有这样一段代码,它使用了 struts2-jquery 插件。

<h4>Choose A task</h4>
    <ul>
        <s:url value="views/ajaxvalidation.jsp" var="ajaxvalidation" >
            <s:param name="menuId" value="1"/>
        </s:url>
        <li><sj:a targets="resultContent" href="%{ajaxvalidation}">Ajax Validation</sj:a></li>
    </ul>
当我单击其内容时,URL 会更改为类似于此的内容,URL 中没有任何变化。它仍然保持不变,我想要的是当我单击链接时,会发生类似于这样的事情: www.myapp.com/#ajaxvalidation 。当我运行代码时,锚点标记被翻译成了类似于这样的东西
<a id="anchor_1365013162" href="javascript:void(0)">Ajax Validation</a>

有了这个前提,我该如何在URL中添加一个哈希值?


3
当你使用AJAX时,URL不应该改变,因为你并没有加载新文档。AJAX是在幕后进行透明通信。 - Barmar
如何使用document.location.hash?请提供一个示例。 - KyelJmD
@KyelJmD - Barmar 在上面的评论中给了一个完整的示例,那一行代码会将散列添加到 URL 中,你只需要展示一些努力并尝试一下,就会明白这个问题,因为它实际上非常简单。 - adeneo
这只是一个 documentation.location.hash 的简单示例。 - KyelJmD
@adeneo 我尝试运行它,但什么也没发生。 - KyelJmD
显示剩余3条评论
2个回答

35

下面是一个可行的示例(不考虑Struts2):

<html>
<body>
<a id="123" href="">Add Hash</a>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(document).ready(function() {
    $("a").click(function(e) {
        window.location.hash = $(this).attr("id");
        e.preventDefault();
    });
});
</script>
</body>
</html>

有没有办法以编程方式添加 #id/somename/?但这个方法可行。 - KyelJmD
5
这段代码的作用是在浏览器地址栏中设置一个哈希标识符,格式为id/somename/ - adeneo

0
如果您不想跳转页面,那么可以通过在现代浏览器上使用历史记录API并在旧浏览器上回退来解决此问题。
if(history.pushState) {
    history.pushState(null, null, '#myhash');
} else {
    location.hash = '#myhash';
}

感谢Lea Verou的贡献


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接