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 ...
随机推荐
- Scratch3 二次开发系列
Scratch3.0来啦!!! Scratch做为图像化编程的首选语言,拖过积木块搭建实现动画游戏的制作.Scratch3添加了音乐.画笔.视频侦测.文字朗读.翻译等选择性下载扩展积木,可实现积 ...
- C#常用正则表达式回顾
项目中有些时候需要用到正则表达式,但是自己对正则表达式不熟悉,每次学习完,过一段时间(长时间)不用,就又忘了,每次需要用到的时候都需要百度下,比较麻烦,这里把C#中经常用到的正则表达式做下总结. 正则 ...
- springmvc上传文件踩过的坑
@RequestMapping("/addTweet") public String addTweet(TweetVO tweetVO, HttpServletRequest re ...
- [Spring+SpringMVC+Mybatis]框架学习笔记(六):事务
第7讲 事务 7.1 事务的概念 事务是一系列作为一个逻辑单元来执行的操作集合. 它是数据库维护数据一致性的单位,它讲数据库从一个一致状态,转变为新的另外一个一致状态.说的简单一点就是:如果一组处理步 ...
- SpringBoot Jpa入门案例
版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons) 我们先来了解一下是什么是springboot jpa,springboo ...
- delegate委托的例子,实现对Form中控件的更新
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- [P2216] [HAOI2007]理想的正方形 「单调队列」
思路:用单调队列分别维护行与列. 具体实现方法:是先用单调队列对每一行的值维护,并将a[][]每个区间的最大值,最小值分别存在X[][]和x[][]中. 那么X[][]与x[][]所存储的分别是1×n ...
- 机器学习经典算法之AdaBoost
一.引言 在数据挖掘中,分类算法可以说是核心算法,其中 AdaBoost 算法与随机森林算法一样都属于分类算法中的集成算法. /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://w ...
- Linux命令(部分)
LINUX:实现某一功能,命令执行依赖于解释器程序. 内部:属于shell部分 外部:独立于shell解释器程序. 系统结构由外到内:用户 ⇢ 外围程序 ⇢ 硬件 ...
- 【iOS】UIAlertView 点击跳转事件
iOS 开发中,UIAlertView 经常用到.这里记录下曾用到的点击跳转事件. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@& ...