使用javascript检查URL是否包含值

Checking if a URL contains a value with javascript

本文关键字:是否 包含值 URL 检查 javascript 使用      更新时间:2023-09-26

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

我首先加载16个结果,然后有一个load more按钮加载下一个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

如果我然后点击加载更多的数据,页面url变成:

www.domain.com/?page=1#2

如果用户随后访问另一个页面并返回,那么他们将被定向到:

www.domain.com/?page=1&page=1
这个问题最好的解决方法是什么?我正在考虑运行一个检查URL的同时寻找一个片段,如果URL有一个页面变量I然后将该变量添加到片段变量和页面URL变成?page= the SUM NUMBER

有什么帮助修改片段我张贴在上面检查URL的页面值,然后在重定向之前将两者加在一起?

谢谢!

您需要使用location.search来获取URL上的查询字符串:

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