加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

如何使用JavaScript解析URL

发布时间:2019-03-03 08:19:32 所属栏目:优化 来源:前端小智
导读:副标题#e# 在 Web 开发中,有许多情况需要解析 URL,这篇主要学习如何使用 URL 对象实现这一点。 开始 创建一个以下内容的 HTML 文件,并在浏览器中打开。 html head titleJavaScriptURLparsing/title /head body script //激动人心的代码即将写在这里 /scri

端口号是服务器上用于获取数据的特定“通道” - 因此,如果我拥有 example.com,我可以在多个不同的端口上发送不同的数据。 但通常域名默认为一个特定端口,因此不需要端口号。 来看看 myURL 的端口号:

  1. console.log(myURL.port);  
  2. // Output: "4000" 

主机(host)

主机只是主机名和端口放在一起,尝试获取 myURL 的主机:

  1. console.log(myURL.host);  
  2. // Output: "example.com:4000" 

来源(origin)

origin 由 URL 的协议,主机名和端口组成。 它基本上是整个 URL,直到端口号结束,如果没有端口号,到主机名结束。

  1. console.log(myURL.origin);  
  2. // Output: "https://example.com:4000" 

pathname(文件名)

pathname 从域名的最后一个 “/” 开始到 “?” 为止,是文件名部分,如果没有 “?” ,则是从域名最后的一个 “/” 开始到 “#” 为止 , 是文件部分, 如果没有 “?” 和 “#” , 那么从域名后的最后一个 “/” 开始到结束 , 都是文件名部分。

  1. console.log(myURL.pathname);  
  2. // Output: "/folder/page.html" 

锚点(hash)

从 “#” 开始到最后,都是锚部分。可以将哈希值添加到 URL 以直接滚动到具有 ID 为该值的哈希值 的元素。 例如,如果你有一个 id 为 hello 的元素,则可以在 URL 中添加 #hello 就可以直接滚动到这个元素的位置上。通过以下方式可以在 URL 获取 “#” 后面的值:

  1. console.log(myURL.hash);  
  2. // Output: "#section-2" 

查询参数 (search)

你还可以向 URL 添加查询参数。它们是键值对,意味着将特定的“变量”设置为特定值。 查询参数的形式为 key=value。 以下是一些 URL 查询参数的示例:

  1. ?key1=value1&key2=value2&key3=value3 

请注意,如果 URL 也有 锚点(hash),则查询参数位于 锚点(hash)(也就是 ‘#’)之前,如我们的示例 URL 中所示:

  1. console.log(myURL.search);  
  2. // Output: "?x=y&a=b" 

但是,如果我们想要拆分它们并获取它们的值,那就有点复杂了。

使用 URLSearchParams 解析查询参数

要解析查询参数,我们需要创建一个 URLSearchParams 对象,如下所示:

  1. var searchParams = new URLSearchParams(myURL.search); 

然后可以通过调用 searchParams.get('key')来获取特定键的值。 使用我们的示例网址 - 这是原始搜索参数:

  1. ?x=y&a=b 

因此,如果我们调用 searchParams.get('x'),那么它应该返回 y,而 searchParams.get('a')应该返回 b,我们来试试吧!

  1. console.log(searchParams.get('x'));  
  2. // Output: "y"  
  3. console.log(searchParams.get('a'));  
  4. // Output: "b" 

扩展

获取 URL 的中参数

方法一:正则法

  1. function getQueryString(name) {  
  2.     var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');  
  3.     var r = window.location.search.substr(1).match(reg);  
  4.     if (r != null) {  
  5.         return unescape(r[2]);  
  6.     }  
  7.     return null;  
  8. }  
  9. // 这样调用:  
  10. alert(GetQueryString("参数名1"));  
  11. alert(GetQueryString("参数名2"));  
  12. alert(GetQueryString("参数名3")); 

方法二:split拆分法

  1. function GetRequest() {  
  2.     var url = location.search; //获取url中"?"符后的字串  
  3.     var theRequest = new Object();  
  4.     if (url.indexOf("?") != -1) {  
  5.         var str = url.substr(1);  
  6.         strstrs = str.split("&");  
  7.         for(var i = 0; i < strs.length; i ++) {  
  8.             theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);  
  9.         }  
  10.     }  
  11.     return theRequest;  
  12. }  
  13. var Request = new Object();  
  14. Request = GetRequest();  
  15. // var 参数1,参数2,参数3,参数N;  
  16. // 参数1 = Request['参数1'];  
  17. // 参数2 = Request['参数2'];  
  18. // 参数3 = Request['参数3'];  
  19. // 参数N = Request['参数N']; 

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读