两个关于URL解析的例子
例一:
/*
解析URL查寻串中的name=value参数对
将name=value对存储在对象属性中,并返回对象
alert(getQuery().name)
*/
function getQuery(){
var obj={}; //定义一个空对象
var arr=location.search.substring(1).split('&');//获取查寻参数
for(var i=0;i<arr.length;i++)
{
if(arr[i].indexOf('=')==-1) //如果没找到就跳过
continue;
else
{
arr[i]=arr[i].split('=');
obj[arr[i][0]]=arr[i][1]; //存储为对象属性
}
}
return obj; //返回解析后的参数
}
例二:
/*
解析一个url,并生成window.location对象中包含的域
href:'包含完整的url',
origin:'包含协议到pathname之前的内容',
protocol:'url使用的协议,包含末尾的:',
host:'完整主机名,包含:和端口',
hostname:'主机名,不包含端口',
port:'端口号',
pathname:'服务器上访问资源的路径/开头',
search:'query string,?开头',
hashs:'#开头的fragment identifier'
@param{string} url需要解析的url
@return{Object} 包含url信息的对象
*/
function parseURL(url){
var result={};
var keys=['href','origin','protocol','host','hostname','port','pathname','search','hashs'];
var i,len;
//$1:(([^:]+:)\/\/(([^:\/\?#]+)(:\d+)?))
//$2:([^:]+:)
//$3:(([^:\/\?#]+)(:\d+)?)
//$4:([^:\/\?#]+)
//$5:(:\d+)?
//$6:(\/[^?#]*)?
//$7:(\?[^#]*)?
//$8:(#.*)?
var reg=/(([^:]+:)\/\/(([^:\/\?#]+)(:\d+)?))(\/[^?#]*)?(\?[^#]*)?(#.*)?/;
var matchs=reg.exec(url);
if(matchs){
for(i=keys.length-1;i>=0;i--){
result[keys[i]]=matchs[i]?matchs[i]:'';
}
}
return result;
}
两个关于URL解析的例子的更多相关文章
- 「Python 编程」编码实现网络请求库中的 URL 解析器
摘要:怎么写出更短的代码并不是这次要讨论的话题.今天我们来研究一下:运行代码的计算机是如何找到目标服务器的? 相信各位 Python 开发者都用过 Requests 库,有些朋友还用过 WebSock ...
- 简单的URL解析
简单的URL解析,直接举例说明了 function getUrl(){ //如果存在则取到来后面的参数,注意,?不需要取出,substring从1开始,否则取""; var qs ...
- ThinkPHP中URL解析原理,以及URL路由使用教程!
几个概念: THINKPHP 是一个MVC框架,使用PATHINFO解析出分组名,模块名,方法名,以及参数. PATHINFO:就是 http://localhost/index.php/Home/I ...
- Django的url解析
Django中采用正则表达式来匹配所请求的url,这个叫做URLconf,作为MVC中的C(控制器), 这样再调用相应的试图,达到控制器控制试图的显示的效果. 看一下Django的url解析过程 第一 ...
- 百度url解析Joe.Smith整理大全
百度url解析Joe.Smith整理大全 百度url解析Joe.Smith整理大全...1 本文链接:http://blog.csdn.net/qq_26816591/article/details/ ...
- jsp页面获取参数的方法(url解析、el表达式赋值、session取值)【原创】
最近使用myEclispse做网站,使用jsp+js+css做页面,网站中常用到从列表进入详情页面的跳转,下面对详情页面的值填充方式做一个简单总结: 1.url中使用request获取参数 jsp上方 ...
- 用正则把url解析为对象
用正则把url解析为对象 <!DOCTYPE html><html><head><meta charset="utf-8">< ...
- [转帖]kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较
kubernetes ingress 在物理机上的nodePort和hostNetwork两种部署方式解析及比较 https://www.cnblogs.com/xuxinkun/p/11052646 ...
- 关于Qt5(1)-- 两个窗口互相切换的例子
<QT Creator快速入门>这本书有一章介绍model和modeless的概念时,用到了两个窗口互相切换的例子.但是原文对该例子的说明非常模糊不清,现整理如下. 1,要求:登陆界面.主 ...
随机推荐
- java关键字,保留字
Java语言有51个保留关键字,其中const和goto虽然被保留但未被使用.你不能使用保留关键字来命名类.方法或变量. 一.保留关键字 数据类型: Boolean int long sh ...
- selenium参考别人的定位元素方法
根据ID名称相同,定位第3个的手写方法 解决方案写法如下: //*[@id="weekDays" and @data-num="3"]
- bzoj 3687 简单题——bitset
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3687 关于 bitset :https://blog.csdn.net/snowy_smil ...
- 利用windows server 2012 R2的Hyper-V搭建多个虚拟机的 Dynamics CRM 环境知识点小结
一.需要掌握网络的知识,域真正的意义,防火墙等其他知识,这些知识我还需要加强,下面是我和同事的结果,不对的地方大家可以指出来,谢谢. 1.安装好的CRM2011环境,必须先打Update Rollup ...
- <<APUE>> 编译方法
/********************************************************************************第0种-最简单实用********** ...
- freeswitch自定义模块的wiki地址
http://wiki.freeswitch.org/wiki/Authoring_Freeswitch_Modules
- Python网络爬虫-requests模块(II)
有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的,例如: #!/usr/bin/env ...
- bzoj 4929: 第三题
Description 给定n,b,c,d,e以及A0,A1,···,An−1,定义 xk=b×c^4k+d×c^2k+e f(x)=Sigma(Aix^i),0<=i<=n-1 请你求出 ...
- 13.MD5对用户密码进行加密
MD5概述 用户名密码保存在客户端是一种十分危险的行为.所以需要进行加密后保存. 其中MD5就是一种比较常用的加密算法. 与其说MD5算法是一种加密算法,不如说是一种数据指纹(数据摘要)算法. 其特点 ...
- 服务器开启JMX监控
JMX是一个框架,提供了一种功能,可以实时查询应用程序中通过JMX向外部公布的相应参数或者是其他应用程序,同时也可以通过JMX来实时地调用应用程序使用JMX向外部公布的接口,来完成一些功能操作. 如果 ...