如何在使用ajax + jQuery分页时更改URL路径
How to change URL path when paging using ajax + jQuery
我使用ajax post请求在我的站点上对提要进行分页。当获得post请求数据时,我正在通过清除以前的数据并呈现来自请求的新数据来改造页面。我希望能够改变URL,以及保存新的页面链接将获得用户到当前页面。
的例子:
- 用户在example.com/feed页-查看第1页的内容
- 用户点击进入页面#2 -> ajax post被发送,页面上的数据使用js(无刷新)更改
- 网址仍为example.com/feed,但内容为example.com/feed?page=2
如何设置URL指向新页面而不触发刷新(不重定向)?
我使用Nodejs + express.
我明白你的目标是单页应用程序。
虽然保留url很好,但请注意,您可能希望使用不同的url来直接访问应用程序的不同部分。不过,您仍然可以使用AJAX加载内容,并保持应用程序的流畅性。方法是使用位置的hash
部分。
Sammy.js框架为您提供了一个很好的构建基础,您可以尝试一下。
您可以使用历史推送状态,但有些浏览器不支持。
history.pushState({id: 'SOME ID'}, '', 'myurl.html');
别忘了窗户。Onpopstate,当用户点击后退按钮时弹出
将用户重定向到锚点。
<a href="#2" onclick="loadPage(2);">Page 2</a>
在你的文档中。ready:
if (window.location.hash.length > 1){
var pageNumber = window.location.hash.substring(1);
loadPage(parseInt(pageNumber));
} else{
loadPage(0);
}
我不相信在不触发刷新的情况下改变URL的查询部分是可能的(可能是由于安全问题)。但是,您可以更改锚并使用事件侦听器来检测何时更改锚。
//Listener
$(window).on('hashchange', function() {
if(loaction.hash.length > 1) {
//The anchor has been changed.
loadPageWithAjax("example.com/feed.php?page=" + location.hash.substring(1));
} else {
//Load standard page
...
}
});
更改锚点以加载新提要
<a href="#2">Page 2</a>
记住不要使用作为id的锚,因为这会使浏览器滚动到该元素。
相关文章:
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 如何通过引用var Using DataTables来进行分页或排序
- 使用CSS或JavaScript计算分页符的数量
- DataTables-创建自定义分页样式(加载更多样式)
- 使用ajax的服务器端分页&jQuery
- 分页:如何用AJAX加载第一个页面
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 不带jquery的全屏分页
- 更改组合框分页后,getValue和getRawValue返回相同的值
- jQuery简单分页
- 使用jQuery在表中分页
- jQuery分页下一页和上一页按钮在点击零或超过最后一页后失败
- jQuery:根据select选项中的每页项目进行分页
- 如何为我的分页添加格式
- 用键盘分页jQuery下一个和上一个控件.触发器('点击')不'不起作用
- 如何在emberjs中使用幻影假数据进行分页
- 如何在分页事件中突出显示数据表中的单词
- 如何在使用jsPDF将html转换为pdf的同时,在pdf中的某个点进行分页
- 导轨 4.宝石will_paginate.更改在 ajax 请求上设置的分页链接
- 如何在使用ajax + jQuery分页时更改URL路径