java - 当我发出 Ajax 请求时,如何更改地址栏?

标签 java jquery ajax url-rewriting struts2

我创建了一个大量使用 Ajax 来加载其内容的网站。 我希望我选择的页面在 AJAX 上加载,但同时 URL 也会发生变化,而无需重新加载整个页面内容。我将如何实现这一目标?我已经用谷歌搜索过,但我的搜索没有产生任何结果。

假设我有这个页面:

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sj" uri="/struts-jquery-tags"%>
<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    <sj:head />
</head>
<body>
    <h5>Struts Jquery Ajax Integration </h5>

    <div id="resultContent"></div>
    <noscript>Please Turn On Javascript to make the full use of this site</noscript>

    <h4>Choose A task</h4>
    <ul>
        <s:url value="views/ajaxvalidation.jsp" var="ajaxvalidation" />
        <li><sj:a targets="resultContent" href="%{ajaxvalidation}">Ajax Validation </sj:a></li>
    </ul>

    <div>
        <h6>Play A Music while You Navigate</h6>
        <audio src="x.mp3" controls>Your browser does not support the
            audio element.
        </audio>
    </div>
</body>
</html>

我单击了 Ajax 验证链接。它不会重新加载页面,但 url 会是这样的:

localhost:8090/AppName/ajaxvalidation.jsp

或者这个:

 localhost:8090/AppName/ajaxvalidation.action

我如何实现这样的目标?

请注意,我正在使用此插件:struts2-jquery

最佳答案

您需要使用History API

window.history.pushState(data, title, url)

更新

注意到您使用了 struts2-jquery,您可以添加 ajaxhistory="true" 来启用 ajax 历史记录功能中的构建。请参阅http://code.google.com/p/struts2-jquery/wiki/HeadTag#Attributes

<sj:head ajaxhistory="true" />

但请记住,并非所有浏览器版本都支持它。

关于java - 当我发出 Ajax 请求时,如何更改地址栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13975827/

相关文章:

java - 如何与mysql中其他行插入的数据形成代码字符串

php - 重定向到ajax请求中的错误页面

java - JSF 和 Facelets 流程

javascript - 如何在实时图表中显示一个Json随机数?

javascript - AJAX 响应文本为空

jquery - Asp.Net MVC 中的 Ajax 返回问题

java - 比较一类常量的字符串值

java 反射列表 NoSuchMethodException

java - 生成随机日期

jquery - 如何将关闭最小化全屏按钮添加到 Bootstrap 面板