Javasrcipt中从一个url或者从一个字符串中获取参数值得方法
从url中获取参数值是che程序开发过程中的常用需求,偶然得闲,便抽空研究了一下javasrcipt下,获取参数的办法(JAVA中也类似)。
首先看url的规范:
URL组成:
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
协议://主机名[:端口]/ 路径/[:参数] [?查询]#Fragment
一个规范的url参数总是在【?query】部分,以 “变量名=值”这样的形式存在;
这样就给我们取值提供了一个思路:
第一种方法:利用正则表达式,从url中获取我们需要的对应的参数的值
function getUrlPramByName(name){
var url = window.location.search; //获取url中?之后的内容
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
if(url){
var r = url.substr(1).match(reg);
if (r != null) {
return decodeURI(r[2]);
}else{
return null;
}
};
};
可以自己在浏览器控制台执行下,这种方法只能单独使用,获取自己需要的那个参数值得变量
第二种方法: 利用字符串操作将所需要的值全部提出来
function getAllUrlPram(){
var url = window.location.search; //获取url中?后面的内容
if(url && url.indexOf("?")!= -1){
url = url.substr(1); //去掉前面的?
var arr = url.split("&"); //将字符串以&为分隔符转化为数组
var obj = {}; //定义一个空对象
for(var i=0;i<arr.length;i++){
var str0 = arr[i].split("=")[0], //将获得数组中的每一个元素字符串转换成用"="分割的数组,数组第一个元素即为key
str1 = arr[i].split("=")[1]; //将获得数组中的每一个元素字符串转换成用"="分割的数组,数组第一个元素即为value
obj[str0] = decodeURI(str1); //由于url中使用的是转义后的字符,因此必须使用decodeURI进行解码
}
return obj;
}else {
return null;
}
}
这样我们可以定义一个在String原型链上的通用方法了:
String.prototype.getUrlParms = function(){
var index = this.indexOf("?");
if(index !=-1){
var str = this.substr(index+1);
var arr = str.split("&"); //将字符串以&为分隔符转化为数组
var obj = {}; //定义一个空对象
for(var i=0;i<arr.length;i++){
var str0 = arr[i].split("=")[0], //将获得数组中的每一个元素字符串转换成用"="分割的数组,数组第一个元素即为key
str1 = arr[i].split("=")[1]; //将获得数组中的每一个元素字符串转换成用"="分割的数组,数组第一个元素即为value
obj[str0] = decodeURI(str1); //由于url中使用的是转义后的字符,因此必须使用decodeURI进行解码
}
return obj;
}else{
return;
}
}
最终对字符串执行getUrlParms()方法后,就会得到一个包含所有需要的参数和参数对应的值得对象了;
Javasrcipt中从一个url或者从一个字符串中获取参数值得方法的更多相关文章
- 一个URL链接到一个页面发生了什么?
最开始觉得这是一个很难理解的东西,后来看了很多人写的发现并没有那么难理解,本人只是一个学渣有什么说的不对的地方希望大家能够指出来! 一个URL从我们输入的那一刻起,到返回页面到底发生了什么呢? URL ...
- jsp页面获取参数的方法(url解析、el表达式赋值、session取值)【原创】
最近使用myEclispse做网站,使用jsp+js+css做页面,网站中常用到从列表进入详情页面的跳转,下面对详情页面的值填充方式做一个简单总结: 1.url中使用request获取参数 jsp上方 ...
- C#中对Web.Config、App.Config字符串加密与解密的方法
我们平常的项目里面的配置文件通常都是明文形式的存在,现在就是为了项目安全性增强,同时又显得高逼格点, 我们可以采用加密的方式,而我们C#很强大,因为他内置的一些指令方式,很方便而且使用起来还不用解密, ...
- 字符串中连续出现最多的子串 & 字符串中最长反复子串
字符串中连续出现最多的子串 & 字符串中最长反复子串 字符串中连续出现最多的子串 & 字符串中最长反复子串,这两个问题都能够用后缀数组来表示,至于后缀数组能够參考编程珠玑P156:后缀 ...
- NGUI中UILabel使用url标签的一个bug
在NGUI里,UILabel控件可以支持一些简单功能的标签,使文本显示更丰富及实现类似超链接的功能.但是在使用的时候发现了NGUI3.5.9版本里存在着一个bug.不过还好修复这个bug也很简单. 在 ...
- 从一个URL加载一个Document
存在问题 你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据.你可以使用下面解决方法: 解决方法 使用 Jsoup.connect(String url)方法: Document doc ...
- 实现一个函数,可以左旋字符串中的k个字符
ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB ABCD BACD BCAD BCDA CBDA CDBA CDAB 发现规律: 如果左旋一个字符则可以将第一个字符依次与后面的字符交 ...
- PHP删除字符串中的空格和换行符 将字符串中的连续多个空格转换为一个空格
//删除空格和回车 function trimall($str){ $qian=array(" "," ","\t","\n&qu ...
- go的gin框架从请求中获取参数的方法
前言: go语言的gin框架go里面比较好的一个web框架, github的start数超过了18000.可见此框架的可信度 如何获取请求中的参数 假如有这么一个请求: POST /post/te ...
随机推荐
- codeblocks出现'to_string' was not declared in this scope 的问题,用g++11编译环境
在将数字转化为字符串时使用to_string()竟然出现了'to_string' was not declared in this scope,我头文件用的万能头文件肯定没问题,而这个函数在其他的CB ...
- MyBatis从入门到精通:第一章配置文件log4j.properties
配置文件: #全局配置 log4j.rootLogger=ERROR,stdout #MyBatis日志配置 log4j.logger.tk.mybatis.simple.mapper=TRACE # ...
- Python 为什么要继承 object 类?
自己搬运自己在知乎上的回答,感觉破乎吃枣药丸,哪天挂了这里就是个备份. 链接:https://www.zhihu.com/question/19754936/answer/229327803 2017 ...
- Web前端三大框架_vue源码笔记
一.VUE 1.1 MVVM VUE也是基于MVVM模式实现的.特点就是数据双向绑定 在MVVM模式中,分成三个部分: M 模型 model V 视图 view VM 视图-模型 view-model ...
- golang http json http://www.alexedwards.net/blog/golang-response-snippets
http://www.alexedwards.net/blog/golang-response-snippets https://gist.github.com/andreagrandi/97263a ...
- Java中的Enumeration、Iterable和Iterator接口详解
前言 在看各类Java书籍或者博文的时候,总是会遇到Enumeration.Iterable和Iterator这三个接口,如果对这几个接口不是很明白的话,总会让自己看着看着就迷惑了,正好这周末,抽空把 ...
- canvas的width和height设置问题
最近在学习canvas属性中遇到一个小问题,就是canvas的width和height设置问题 代码如下: <!DOCTYPE html> <html lang="en&q ...
- 解决springmvc返回中文乱码问题
- Spring管理事物两种方式
Spring管理事物两种方式 1. 编程式事物管理(在开发中不经常使用) 使用步骤 1. 配置数据库事物管理 DataSourceTransactionManager <!--配置事物管理器-- ...
- burpsuit用法
1. 学习Proxy首先看标红,intercept is on 为拦截状态 其对应的intercept is off 为非拦截状态,设置完代理后打开拦截状态 ,浏览器发起的请求会被burpsuite ...