url查询参数解析
url查询参数解析
1.获取url的各部分值
- 举例http://i.cnblogs.com/EditPosts.aspx?opt=1
- 1、window.location.href(设置或获取整个 URL 为字符串)
- var test = window.location.href;
- alert(test);
- 返回:http://i.cnblogs.com/EditPosts.aspx?opt=1
- 2、window.location.protocol(设置或获取 URL 的协议部分)
- var test = window.location.protocol;
- alert(test);
- 返回:http:
- 3、window.location.host(设置或获取 URL 的主机部分)
- var test = window.location.host;
- alert(test);
- 返回:i.cnblogs.com
- 4、window.location.port(设置或获取与 URL 关联的端口号码)
- var test = window.location.port;
- alert(test);
- 返回:空字符(如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符)
- 5、window.location.pathname(设置或获取与 URL 的路径部分(就是文件地址))
- var test = window.location.pathname;
- alert(test);
- 返回:/EditPosts.aspx
- 6、window.location.search(设置或获取 href 属性中跟在问号后面的部分)
- var test = window.location.search;
- alert(test);
- 返回:?opt=1
- PS:获得查询(参数)部分,除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值。
- 7、window.location.hash(设置或获取 href 属性中在井号“#”后面的分段)
- var test = window.location.hash;
- alert(test);
- 返回:空字符(因为url中没有)
2.将url查询参数通过正则表达式解析成数据字典
- function getQueryObject(url) {
- url = url == null ? window.location.href : url;
- var search = url.substring(url.lastIndexOf("?") + 1);
- var obj = {};
- var reg = /([^?&=]+)=([^?&=]*)/g;
- // [^?&=]+表示:除了?、&、=之外的一到多个字符
- // [^?&=]*表示:除了?、&、=之外的0到多个字符(任意多个)
- search.replace(reg, function (rs, $1, $2) {
- var name = decodeURIComponent($1);
- var val = decodeURIComponent($2);
- val = String(val);
- obj[name] = val;
- return rs;
- });
- return obj;
- }
- 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'));
- // Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}
3.将url查询参数手动解析成数据字典
- function getQueryStringArgs(url){
- url = url == null ? window.location.href : url;
- var qs = url.substring(url.lastIndexOf("?") + 1);
- var args = {};
- var items = qs.length > 0 ? qs.split('&') : [];
- var item = null;
- var name = null;
- var value = null;
- for(var i=0; i<items.length; i++){
- item = items[i].split("=");
- //用decodeURIComponent()分别解码name 和value(因为查询字符串应该是被编码过的)。
- name = decodeURIComponent(item[0]);
- value = decodeURIComponent(item[1]);
- if(name.length){
- args[name] = value;
- }
- }
- return args;
- }
- 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'));
- // Object {tn: "monline_3_dg", ie: "utf-8", wd: "12306火车票网上订票官网"}
url查询参数解析的更多相关文章
- gin的url查询参数解析
gin作为go语言最知名的网络库,在这里我简要介绍一下url的查询参数解析.主要是这里面存在一些需要注意的地方.这里,直接给出代码,和运行结果,在必要的地方进行分析. 代码1: type Struct ...
- Node基础:url查询参数解析之querystring
模块概述 在nodejs中,提供了querystring这个模块,用来做url查询参数的解析,使用非常简单. 模块总共有四个方法,绝大部分时,我们只会用到 .parse(). .stringify() ...
- 获取url查询参数的方法
/** * 获取url查询参数的方法 * @param name * @returns {null} * @constructor */ function GetQueryString(name) { ...
- angular6 监听url查询参数变化刷新页面
快照snapshot取到的参数是组件第一次渲染时候的参数,当我们在页面中需要根据不同的url查询参数显示不同的内容时,快照就不能满足我们的需要了,这时候就要用ActivatedRoute服务的quer ...
- 函数parseQuery用于解析url查询参数
在百度上找的,以后忘了再看. 语法如下: var obj = parseQuery(query) query是被解析的查询参数,函数返回解析后的对象. 使用范例如下: var jerry = pars ...
- URL网址参数解析类
/** * Created by myc on 2015/12/9. */ import android.text.TextUtils; import java.util.HashMap; impor ...
- react获取url查询参数
继承自React.Component的this.props.location.query对象下有当前url的各种查询参数.简单的例子:在控制台打印这个对象 import React from 'rea ...
- 将url的查询参数解析成字典对象
1, 这个题目不约而同的出现在了多家公司的面试题中,当然也是因为太过于典型,解决方案无非就是拆字符或者用正则匹配来解决,我个人强烈建议用正则匹配,因为url允许用户随意输入,如果用拆字符的方式,有任何 ...
- 一种快速构造和获取URL查询参数的方法:URLSearchParams
URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串. URLSearchParams()是个构造函数,将返回一个可以操作查询字符串的对象. 常用方法: 1.构造查询字 ...
随机推荐
- 同台同时多开DELPHI2007的解决办法
Cannot create file "C:\Users\Administrator\AppData\Local\Temp\EditorLineEnds.ttr"这个问题的产生根据 ...
- CodeLite C/C+ IDE更新放出
CodeLite IDE Revision 1145 for C/C++已经发布,这是一个强大的开源,跨平台的C/C++整合开发环境.目前已经在Windows XP SP3,Ubuntu 7.10 G ...
- Spring-framework应用程序启动loadtime源码分析笔记(一)
1,实例化DefaultListableBeanFactory DefaultListableBeanFactory是AnnotationConfigApplicationContext的组件,Def ...
- 《Java并发编程实战》笔记-synchronized和ReentrantLock
在一些内置锁无法满足需求的情况下,ReentrantLock可以作为一种高级工具.当震要一些高级功能时才应该使用ReentrantLock,这些功能包括:可定时的.可轮询的与可中断的锁获取操作,公平队 ...
- PAT 乙级 1076 Wifi密码 (15)
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用wifi,又怕耽误亲们的学习,现将wifi密码设置为下列数学题答案:A-1:B-2:C-3:D-4:请同学们自己作答,每两日一换.谢 ...
- vue之自定义组件
除了核心功能默认内置的指令外,vue也允许用户注册自定义指令.虽然在vue2.0中,代码复用和抽象的主要形式是组件,但是有些情况下,我们仍需要对普通DOM元素进行底层操作,这个时候就需要用到自定义指令 ...
- redis安装,修改配置文件,多实例部署 redis-server
redis 安装 解压: [root@Aliyun software]# tar -xvf redis-3.2.11.tar.gz 进入redis根目录: [root@Aliyun software] ...
- 廖雪峰Java3异常处理-1错误处理-3抛出异常
1.异常的传播 当某个方法抛出异常时: 如果当前方法没有捕获,异常就被抛到上层调用方法 直到遇到某个try...catch被捕获 使用printStackTrace()打印处方法的调用栈 import ...
- Abp IRepository 方法解释(1)
// // 摘要: // This interface is implemented by all repositories to ensure implementation of ...
- scala语法在spark withScope上的应用
withSpout在spark中是用来做DAG可视化的,它在代码里的用法如下(以map为例,spark 2.0.0版本) def map[U: ClassTag](f: T => U): RDD ...