使用 javascript 检查 URL 是不是包含值
Posted
技术标签:
【中文标题】使用 javascript 检查 URL 是不是包含值【英文标题】:Checking if a URL contains a value with javascript使用 javascript 检查 URL 是否包含值 【发布时间】:2014-06-17 23:05:35 【问题描述】:我正在为我的网站开发一项功能,该功能允许用户使用后退按钮而不必加载更多数据库结果。
我首先加载 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
如果我点击加载更多数据,页面 url 变为:
www.domain.com/?page=1#2
如果用户随后访问另一个页面并返回,那么他们将被定向到:
www.domain.com/?page=1&page=1
解决这个问题的最佳方法是什么?我正在考虑在查找片段的同时对 URL 进行检查,如果 URL 有页面变量,我然后将该变量添加到片段变量中,页面 URL 变为 ?page=THE SUM NUMBER
对修改上面发布的 sn-p 以检查 URL 的页面值然后在重定向之前将两者相加有任何帮助吗?
谢谢!
【问题讨论】:
【参考方案1】:您需要使用location.search
来获取URL 上的查询字符串:
var queryParameters = location.search.split('&');
然后你可以循环查询参数并检查是否设置了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
的信息。
【讨论】:
以上是关于使用 javascript 检查 URL 是不是包含值的主要内容,如果未能解决你的问题,请参考以下文章
如何检查本地 JavaScript 包是不是为 Semver?
如何检查url查询字符串是不是等于javascript(或jquery)[重复]