从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或者从一个字符串中获取参数值得方法的更多相关文章

  1. 一个URL链接到一个页面发生了什么?

    最开始觉得这是一个很难理解的东西,后来看了很多人写的发现并没有那么难理解,本人只是一个学渣有什么说的不对的地方希望大家能够指出来! 一个URL从我们输入的那一刻起,到返回页面到底发生了什么呢? URL ...

  2. jsp页面获取参数的方法(url解析、el表达式赋值、session取值)【原创】

    最近使用myEclispse做网站,使用jsp+js+css做页面,网站中常用到从列表进入详情页面的跳转,下面对详情页面的值填充方式做一个简单总结: 1.url中使用request获取参数 jsp上方 ...

  3. C#中对Web.Config、App.Config字符串加密与解密的方法

    我们平常的项目里面的配置文件通常都是明文形式的存在,现在就是为了项目安全性增强,同时又显得高逼格点, 我们可以采用加密的方式,而我们C#很强大,因为他内置的一些指令方式,很方便而且使用起来还不用解密, ...

  4. 字符串中连续出现最多的子串 &amp; 字符串中最长反复子串

    字符串中连续出现最多的子串 & 字符串中最长反复子串 字符串中连续出现最多的子串 & 字符串中最长反复子串,这两个问题都能够用后缀数组来表示,至于后缀数组能够參考编程珠玑P156:后缀 ...

  5. NGUI中UILabel使用url标签的一个bug

    在NGUI里,UILabel控件可以支持一些简单功能的标签,使文本显示更丰富及实现类似超链接的功能.但是在使用的时候发现了NGUI3.5.9版本里存在着一个bug.不过还好修复这个bug也很简单. 在 ...

  6. 从一个URL加载一个Document

    存在问题 你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据.你可以使用下面解决方法: 解决方法 使用 Jsoup.connect(String url)方法: Document doc ...

  7. 实现一个函数,可以左旋字符串中的k个字符

    ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB ABCD BACD BCAD BCDA CBDA CDBA CDAB 发现规律: 如果左旋一个字符则可以将第一个字符依次与后面的字符交 ...

  8. PHP删除字符串中的空格和换行符 将字符串中的连续多个空格转换为一个空格

    //删除空格和回车 function trimall($str){ $qian=array(" "," ","\t","\n&qu ...

  9. go的gin框架从请求中获取参数的方法

    前言: go语言的gin框架go里面比较好的一个web框架, github的start数超过了18000.可见此框架的可信度 如何获取请求中的参数 假如有这么一个请求: POST   /post/te ...

随机推荐

  1. 基于SpringBoot的Web API快速开发基础框架

    其实还是很因为懒,才会有这个案例项目的产生,每次开启一个终端的小服务都要整理一次框架,造成重复的.不必要的.缺乏创造性的劳动,SO,本着可以用.用着简单的原则上传代码到Github,希望有需要的朋友直 ...

  2. 满足高密度设备存储需求 一颗ICMAXLPDDR4X 8GB就行

    通讯技术在当代无疑更新越来越快速,随着5G时代即将到来,对通讯的设备的要求也将提出更高的要求.具备AI功能的硬件设备将普及化,其智能化程度也将越来越高,同时对手机等智能移动设备的内存容量和带宽也提出了 ...

  3. android_aidl

    好久未更新博客了.人都是这样,刚开始对某一样东东冲劲十足,时间一长,很难坚持下去了,我这博客也是.所以我要打破成规,继续更新. 本次博客谈谈adil的用法.aidl的全称叫什么来着忘了,不过不要紧,重 ...

  4. TF项目实战(SSD目标检测)-VOC2007

    TF项目实战(SSD目标检测)-VOC2007 训练好的模型和代码会公布在网上: 步骤: 1.代码地址:https://github.com/balancap/SSD-Tensorflow 2.解压s ...

  5. 从0系统学Android--1.2 手把手带你搭建开发环境

    要想进行程序开发,首先我们需要搭建开发环境,下面就开始搭建环境. 1.2.1 所需的工具 首先 Android 开发是基于 Java 的,因此你需要掌握简单的 Java 语法.会基础的 Java 语法 ...

  6. vs调试看窗口风格

    vs调试看窗口风格 技巧:在数值上右键,以16进制显示.

  7. github访问不到,登陆不上

    为github添加host C:\WINDOWS\System32\drivers\etc 在host文件添加如下两行 192.30.253.112 github.com 151.101.113.19 ...

  8. ASP.NET Core系列(三):启动类Startup

    前面讲了ASP.NET Core 的项目结构,查看完整的ASP.NET Core系列文章:https://www.cnblogs.com/zhangweizhong/category/1477144. ...

  9. 在WebApi项目里使用MiniProfiler并且分析 Entity Framework Core

    在WebApi项目里使用MiniProfiler并且分析 Entity Framework Core 一.安装配置MiniProfiler 在现有的ASP.NET Core MVC WebApi 项目 ...

  10. .net持续集成sonarqube篇之 sonarqube集成单元测试

    系列目录 通过前面章节我们可以看到,不论怎么构建,单元测试覆盖率一栏总是0% 这是因为单元测试覆盖率报告需要额外集成.这一节我们就讲解如何在sonarqube里集成单元测试覆盖率报告. 这里需要借助O ...