【发布时间】:2016-04-14 02:45:00
【问题描述】:
浏览器和我的应用程序的“返回”按钮有问题。 webapp 使用 ajax 和标准请求。这一切都是这样发生的:
我向
list.jsp页面发出 GET 请求 - 如果您检查我在下面提供的临时链接,这是您在应用程序中看到的第一页。现在我们在第 1 页(整个页面已重新加载)我向页面
4发出 Ajax 请求(单击链接 - 即页码)。只有页面的一部分被重新加载 - 一切正常。因此,现在我们在第 4 页我向页面
5发出 Ajax 请求(单击链接 - 即页码)。只有页面的一部分被重新加载 - 一切正常。因此,现在我们在第 5 页现在我按下浏览器的“返回”按钮(回到历史记录一步) - 什么都没有发生。浏览器控制台未显示任何更改。
这一步我再次按下浏览器的“返回”按钮。事实证明,这一步执行正确。 GET 请求发生了。
发生了什么事?为什么浏览器不记得第 3 步发生的更改?如何指示浏览器对 ajax 请求所做的更改进行step back to history?
您可以通过temp link在线查看。试着浏览这些页面。粉色方块是当前页面指示符。
更新 1:
此代码在加载程序完成加载资源后初始化。
$(function() {
$(window).on('hashchange', refreshByHash);
refreshByHash();
function refreshByHash() {
var hash = window.location.hash;
console.log("hash = " + hash.substring(1));
/* $.ajax({
url : 'paginator.action?page=' + hash, // action
type : 'GET', //type of posting the data
dataType : 'html',
async: true,
success : function(htmlData) {
$('#paginator').html(htmlData);
},
error : function(xhr, ajaxOptions, thrownError) {
alert('An error occurred! ' + thrownError);
},
}); */
}
});
【问题讨论】:
-
你使用原始的 javascript 还是一些框架,比如 angularjs 或 jquery?
-
另外一个内联 MCVE 会很棒,所以回答你问题的人不必从头开始建立一个例子
-
@hege_hegedus 我使用 jquery 和 javascript 进行分页更改。核心框架是java。
-
@hege_hegedus 很难让内联 MCVE 重现正在发生的事情
标签: jquery ajax web-applications