我正在为我的网站开发一项功能,允许用户使用后退按钮,而不必加载更多数据库结果。
我首先加载16个结果,然后有一个加载更多按钮,加载下一个16.在ajax成功中,我改变了这个按钮的href,所以url变为例如domain.com/#1到#2。
我昨晚写了这个:
// First get the page URL and split it via # signs
var parts = location.href.split('#');
// now we run a check on the URL and see how many 'parts' there are
if(parts.length > 1)
{
var params = parts[0].split('?');
var mark = '?';
if(params.length > 1)
{
mark = '&';
}
location.href = parts[0] + mark + 'page=' + parts[1];
}
获取URL,并将用户重定向到同一页面,但将片段编号转换为页码。从此我然后使用PHP $ _GET并设置限制克劳斯的最后一个值。
这很好用。但它的原始。例如,假设我推回,URL变为:
www.domain.com/?page=1
如果我然后点击加载更多数据,页面网址将变为:
www.domain.com/?page=1#2
如果用户随后访问了另一个页面并返回,则会将其定向到:
www.domain.com/?page=1&page=1
围绕这个最好的方法是什么?我正在考虑在查找片段的同时对URL进行检查,如果URL有页面变量,则将该变量添加到片段变量中,页面URL变为?page = THE SUM NUMBER
有关修改我上面发布的代码片段的任何帮助,检查页面值的URL,然后在重定向之前将两者一起添加?
谢谢!
答案 0 :(得分:0)
您需要使用location.search
来获取网址上的查询字符串:
var queryParameters = location.search.split('&');
然后,您可以遍历queryParameters并检查是否设置了page
:
var pageNumber = 0;
for(var i = 0; i < queryParameters.length; i++)
{
var keyvaluePair = queryParameters[i].split('=');
if(keyvaluePair[0] == 'page')
{
pageNumber = keyvaluePair[1];
break;
}
}
请参阅MDN上的文档:
https://developer.mozilla.org/en-US/docs/Web/API/Window.location
您可能还会发现此示例对于返回一个值很有用:
https://developer.mozilla.org/en-US/docs/Web/API/Window.location#Example_.236.3A_Get_the_value_of_a_single_window.location.search_key.3A
如果您想在#
之后获取信息,则需要使用location.hash
。我链接的MDN文档也包含有关location.hash
的信息。