检查URL是否包含javascript值

时间:2014-05-01 13:00:36

标签: javascript php jquery url fragment

我正在为我的网站开发一项功能,允许用户使用后退按钮,而不必加载更多数据库结果。

我首先加载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,然后在重定向之前将两者一起添加?

谢谢!

1 个答案:

答案 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的信息。