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 ...
随机推荐
- 浅入深出Vue:发布项目
项目完成之后,当然不能满足于在我们的开发环境下跑一跑.我们可以打包发布到服务器上,让大家一起来欣赏一下你的作品. 那么 vue 项目如何打包发布呢,新建的项目目录下通常都有一个 README.md 的 ...
- Bzoj 2281 [Sdoi2011]黑白棋 题解
2281: [Sdoi2011]黑白棋 Time Limit: 3 Sec Memory Limit: 512 MBSubmit: 592 Solved: 362[Submit][Status][ ...
- 20141126-DotNetStack
- MyBatis foreach标签的用法
From<MyBatis从入门到精通> 一.foreach实现in集合 1.映射文件中添加的代码: <!-- 4.4 foreach用法 SQL语句有时会使用IN关键字,例如id i ...
- Java编程思想:进程控制
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public ...
- Java用Zip进行压缩
这个总结源于Java编程思想第四版18.11节的案例: 完整代码地址: Java编程思想:压缩 相关Api地址: ZipStream ZipEntry ZipFile 进行压缩时: 1.创建Check ...
- VUE+element tree 实现权限管理
先写个标题~ ~,后续有空在写 具体功能: 1. 获取所有角色权限列表展示,点击进行编辑,编辑用terr树形结构显示页面结构 2.提交的数据格式(页面名称,角色ID,父节点ID,子节点ID) 3.后面 ...
- Linux中的保护机制
Linux中的保护机制 在编写漏洞利用代码的时候,需要特别注意目标进程是否开启了NX.PIE等机制,例如存在NX的话就不能直接执行栈上的数据,存在PIE 的话各个系统调用的地址就是随机化的. 一:ca ...
- random,time,sys,os
import random print(random.random()) #(0,1)大于0且小于1之间的小数 print(random.randint(1,3)) #大于等于1且小于等于3之间的整数 ...
- Web服务器怎么解析URL
问:Web服务器是如何将浏览器中输入的地址"http://localhost:8080/SimpleServlet/First" 答:以Java 为例(各种语言都是类似的) 1)地 ...