url查询参数解析

1.获取url的各部分值

  1. 举例http://i.cnblogs.com/EditPosts.aspx?opt=1
  2.  
  3. 1window.location.href(设置或获取整个 URL 为字符串)
  4. var test = window.location.href;
  5. alert(test);
  6. 返回:http://i.cnblogs.com/EditPosts.aspx?opt=1
  7.  
  8. 2window.location.protocol(设置或获取 URL 的协议部分)
  9.  
  10. var test = window.location.protocol;
  11. alert(test);
  12. 返回:http:
  13.  
  14. 3window.location.host(设置或获取 URL 的主机部分)
  15.  
  16. var test = window.location.host;
  17. alert(test);
  18. 返回:i.cnblogs.com
  19.  
  20. 4window.location.port(设置或获取与 URL 关联的端口号码)
  21.  
  22. var test = window.location.port;
  23. alert(test);
  24. 返回:空字符(如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符)
  25.  
  26. 5window.location.pathname(设置或获取与 URL 的路径部分(就是文件地址))
  27. var test = window.location.pathname;
  28. alert(test);
  29. 返回:/EditPosts.aspx
  30.  
  31. 6window.location.search(设置或获取 href 属性中跟在问号后面的部分)
  32.  
  33. var test = window.location.search;
  34. alert(test);
  35. 返回:?opt=1
  36.  
  37. PS:获得查询(参数)部分,除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值。
  38.  
  39. 7window.location.hash(设置或获取 href 属性中在井号“#”后面的分段)
  40.  
  41. var test = window.location.hash;
  42. alert(test);
  43. 返回:空字符(因为url中没有)

2.将url查询参数通过正则表达式解析成数据字典

  1. function getQueryObject(url) {
  2. url = url == null ? window.location.href : url;
  3. var search = url.substring(url.lastIndexOf("?") + 1);
  4. var obj = {};
  5. var reg = /([^?&=]+)=([^?&=]*)/g;
  6. // [^?&=]+表示:除了?、&、=之外的一到多个字符
  7. // [^?&=]*表示:除了?、&、=之外的0到多个字符(任意多个)
  8. search.replace(reg, function (rs, $1, $2) {
  9. var name = decodeURIComponent($1);
  10. var val = decodeURIComponent($2);
  11. val = String(val);
  12. obj[name] = val;
  13. return rs;
  14. });
  15. return obj;
  16. }
  17. console.log(getQueryObject('https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=12306%E7%81%AB%E8%BD%A6%E7%A5%A8%E7%BD%91%E4%B8%8A%E8%AE%A2%E7%A5%A8%E5%AE%98%E7%BD%91'));
  18. // Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}

3.将url查询参数手动解析成数据字典

  1. function getQueryStringArgs(url){
  2. url = url == null ? window.location.href : url;
  3. var qs = url.substring(url.lastIndexOf("?") + 1);
  4. var args = {};
  5. var items = qs.length > 0 ? qs.split('&') : [];
  6. var item = null;
  7. var name = null;
  8. var value = null;
  9. for(var i=0; i<items.length; i++){
  10. item = items[i].split("=");
  11. //用decodeURIComponent()分别解码name 和value(因为查询字符串应该是被编码过的)。
  12. name = decodeURIComponent(item[0]);
  13. value = decodeURIComponent(item[1]);
  14.  
  15. if(name.length){
  16. args[name] = value;
  17. }
  18. }
  19.  
  20. return args;
  21. }
  22. console.log(getQueryStringArgs('https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=12306%E7%81%AB%E8%BD%A6%E7%A5%A8%E7%BD%91%E4%B8%8A%E8%AE%A2%E7%A5%A8%E5%AE%98%E7%BD%91'));
  23. // Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}

url查询参数解析的更多相关文章

  1. gin的url查询参数解析

    gin作为go语言最知名的网络库,在这里我简要介绍一下url的查询参数解析.主要是这里面存在一些需要注意的地方.这里,直接给出代码,和运行结果,在必要的地方进行分析. 代码1: type Struct ...

  2. Node基础:url查询参数解析之querystring

    模块概述 在nodejs中,提供了querystring这个模块,用来做url查询参数的解析,使用非常简单. 模块总共有四个方法,绝大部分时,我们只会用到 .parse(). .stringify() ...

  3. 获取url查询参数的方法

    /** * 获取url查询参数的方法 * @param name * @returns {null} * @constructor */ function GetQueryString(name) { ...

  4. angular6 监听url查询参数变化刷新页面

    快照snapshot取到的参数是组件第一次渲染时候的参数,当我们在页面中需要根据不同的url查询参数显示不同的内容时,快照就不能满足我们的需要了,这时候就要用ActivatedRoute服务的quer ...

  5. 函数parseQuery用于解析url查询参数

    在百度上找的,以后忘了再看. 语法如下: var obj = parseQuery(query) query是被解析的查询参数,函数返回解析后的对象. 使用范例如下: var jerry = pars ...

  6. URL网址参数解析类

    /** * Created by myc on 2015/12/9. */ import android.text.TextUtils; import java.util.HashMap; impor ...

  7. react获取url查询参数

    继承自React.Component的this.props.location.query对象下有当前url的各种查询参数.简单的例子:在控制台打印这个对象 import React from 'rea ...

  8. 将url的查询参数解析成字典对象

    1, 这个题目不约而同的出现在了多家公司的面试题中,当然也是因为太过于典型,解决方案无非就是拆字符或者用正则匹配来解决,我个人强烈建议用正则匹配,因为url允许用户随意输入,如果用拆字符的方式,有任何 ...

  9. 一种快速构造和获取URL查询参数的方法:URLSearchParams

    URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串. URLSearchParams()是个构造函数,将返回一个可以操作查询字符串的对象. 常用方法: 1.构造查询字 ...

随机推荐

  1. 同台同时多开DELPHI2007的解决办法

    Cannot create file "C:\Users\Administrator\AppData\Local\Temp\EditorLineEnds.ttr"这个问题的产生根据 ...

  2. CodeLite C/C+ IDE更新放出

    CodeLite IDE Revision 1145 for C/C++已经发布,这是一个强大的开源,跨平台的C/C++整合开发环境.目前已经在Windows XP SP3,Ubuntu 7.10 G ...

  3. Spring-framework应用程序启动loadtime源码分析笔记(一)

    1,实例化DefaultListableBeanFactory DefaultListableBeanFactory是AnnotationConfigApplicationContext的组件,Def ...

  4. 《Java并发编程实战》笔记-synchronized和ReentrantLock

    在一些内置锁无法满足需求的情况下,ReentrantLock可以作为一种高级工具.当震要一些高级功能时才应该使用ReentrantLock,这些功能包括:可定时的.可轮询的与可中断的锁获取操作,公平队 ...

  5. PAT 乙级 1076 Wifi密码 (15)

    下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用wifi,又怕耽误亲们的学习,现将wifi密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己作答,每两日一换.谢 ...

  6. vue之自定义组件

    除了核心功能默认内置的指令外,vue也允许用户注册自定义指令.虽然在vue2.0中,代码复用和抽象的主要形式是组件,但是有些情况下,我们仍需要对普通DOM元素进行底层操作,这个时候就需要用到自定义指令 ...

  7. redis安装,修改配置文件,多实例部署 redis-server

    redis 安装 解压: [root@Aliyun software]# tar -xvf redis-3.2.11.tar.gz 进入redis根目录: [root@Aliyun software] ...

  8. 廖雪峰Java3异常处理-1错误处理-3抛出异常

    1.异常的传播 当某个方法抛出异常时: 如果当前方法没有捕获,异常就被抛到上层调用方法 直到遇到某个try...catch被捕获 使用printStackTrace()打印处方法的调用栈 import ...

  9. Abp IRepository 方法解释(1)

    //    // 摘要:    //     This interface is implemented by all repositories to ensure implementation of ...

  10. scala语法在spark withScope上的应用

    withSpout在spark中是用来做DAG可视化的,它在代码里的用法如下(以map为例,spark 2.0.0版本) def map[U: ClassTag](f: T => U): RDD ...