url 解析
最近在做一个单页应用,使用AngularJS来处理一些页内路由(哈希#后的路由变化)。自然会要解析URL中的参数。使用AngularJS自带的方法$location.search();可以自动将参数整理成一个对象,感觉非常方便,我们今天就来试着写一个。url嘛,可以看成一个有特定规律的字符串。第一反应是是不是可以用正则表达式和字符串操作
一个复杂的url 可能是这样的http://www.baidu.com/#/test/my?params1=a&parmas2=b&parmas2=bb&parmas2=bbb
一、字符串函数解析
我们可以借助一个字符串API split() : http://www.w3school.com.cn/jsref/jsref_split.asp
var urlTool = {
getDomain: function(url){
var _url = url;
var domain = (_url.split('?')[0]).split('#');
if(domain){
return domain;
}else{
return '';
}
},
getParmas: function(url){
var search = {};
var _url = url;
var strParams = _url.split('?')[1];
if(!strParams){return {};}
var params = strParams.split('&');
var par_len = params.length;
for(var i_par = 0; i_par < par_len; i_par++){
var par = params[i_par].split('=');
var k = par[0],
v = par[1];
if(!search[k]){
search[k] = v;
}else{
if(search[k].length && search[k].length > 1){
//已存在是数组
search[k].push(v);
}else{
//已存在但不是数组
var old_v = search[k]
search[k] = [];
search[k].push(old_v);
search[k].push(v);
}
}
}
return search;
}
}
url 解析的更多相关文章
- 简单的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">< ...
- 「Python 编程」编码实现网络请求库中的 URL 解析器
摘要:怎么写出更短的代码并不是这次要讨论的话题.今天我们来研究一下:运行代码的计算机是如何找到目标服务器的? 相信各位 Python 开发者都用过 Requests 库,有些朋友还用过 WebSock ...
- nodejs URL解析
说到URL就需要提一下URI,一个网址就是一个URL,是一个具体的符号,说明了要通过什么协议来访问某种资源,URI是一个字符格式规范,URL是URI的一个子集,URL肯定是URI,但URI却不一定是U ...
- 三道JS试题(遍历、创建对象、URL解析)
最近在网上看到了三道不错的JS试题,还是很基础(一直认为学好前端基本功很重要...),现在记录如下: 原帖地址:http://www.w3cfuns.com/forum.php?mod=viewthr ...
- 在ASP.NET非MVC环境中(WebForm中)构造MVC的URL参数,以及如何根据URL解析出匹配到MVC路由的Controller和Action
目前项目中有个需求,需要在WebForm中去构造MVC的URL信息,这里写了一个帮助类可以在ASP.NET非MVC环境中(WebForm中)构造MVC的URL信息,主要就是借助当前Http上下文去构造 ...
随机推荐
- shiro【filter】
alt+7 OncePerRequestFilter public final void doFilter(ServletRequest request, ServletResponse respon ...
- JavaSE---反射(未完待续)
1.概述 1.1 Java程序中许多对象在运行时会出现2种类型:编译时类型.运行时类型: eg:Person person=new Student(); 这行代码在编译时为Person类型,运行时为 ...
- STM32 从M3到M4
一 考虑STM32不同系列移植的外设资源情况: STM32微控制器应用的移植和兼容性指南AN3364 二 M4的DSP/FPU的使用方法https://blog.csdn.net/electrocra ...
- hybird app 工具选型
目前hybird app工具众多,如何选择?哪个坑少点呢? 下面来分析一下: 1开发工具都开源.基于Eclipse的有:apicloud,WeX5 2热门指数.下面的百度的搜索结果数,代表不了什么,至 ...
- Unity 组件.name
组件.name 指的是组件所在游戏对象的名字,例如: Animation m_animation; m_animation =GetComponent<Animation>(); m_a ...
- jenkins自动打IOS包(转发)
投稿文章,作者:一缕殇流化隐半边冰霜(@halfrost) 前言 众所周知,现在App的竞争已经到了用户体验为王,质量为上的白热化阶段.用户们都是很挑剔的.如果一个公司的推广团队好不容易砸了重金推广了 ...
- MATLAB基本概念和变量
基本概念 1.x=int8(129)=>x=127 (带符号8位整数,最大值为127) x=uint8(129)=>x=129 (无符号型,最大值为255) 2.class函数得 ...
- eureka的一点细节
第二部分粗略的过一遍,还是有些模糊,再来相对系统的看一下: ---------------------------------------------------------------------- ...
- 揭秘企业级web负载均衡完美架构
相信很多朋友对企业级的负载均衡高可用实例非常感兴趣,此篇文章根据成熟的线上环境而写,旨在帮助大家迅速架构一个企业级的负载均衡高可用的web环境. 此系统架构仅映射内网VIP的80及443端口于外网的J ...
- Java入门之JDK安装及环境变量配置
一.安装JDK 安装过程中会出现两次安装提示 .第一次是安装 jdk ,第二次是安装 jre .建议两个都安装在同一个java文件夹中的不同文件夹中. (注:若无安装目录要求,可全默认设置.无需做任何 ...