文章分类 Classification
js实现QueryString功能
稿件来源: 阳光企业网站管理系统 撰稿作者: 太阳光 发表日期: 2013-11-12 阅读次数: 661 查看权限: 游客查看
服务器后台脚本都有获取链接地址参数功能,javascript也可以。
实际应用或者面试中都可能会要求你用js写一个方法实现获取链接地址的参数值,假如url:sdf.html?a=34&sd=sdfs&ds=8234&sd=&dfs=sdfsdf&a=jj
首先你应该直观知道可以从?号截断,再以&分割成数组,然后再以=分割成key与value即可:
var str="sdf.html?a=34&sd=sdfs&ds=8234&dfs=sdfsdf&a=jjj"; var t = str.split("?")[1]; var a = t.split("&"); var o = {}; for(var i=0;i< a.length;i++){ var l = a[i].split("="); o[l[0]]=l[1]; } console.log(o);
这是最原始最初级的方法,存在一些问题:没有考虑含有#,也没考虑重复的变量。曾经在CSDN有人改为:
function GetQueryString(name) { var reg = new RegExp("[&\?]" + name + "=([^&#]*)", "ig"); var res = []; location.search.replace(reg, function ($, $1) { res.push($1); }); return res; }
此方法精明多了,使用正侧。并考虑了#及重复变量问题。但仍有不理想的地方:一是每次获取都需要匹配,二是返回结果为数组。我希望的是像asp一样,有重复变量时,返回的多个值之间以,号隔开,但仍是字符串。最好不要反复匹配:
var obj={}; location.search.replace(/[\?&]([^=#]+)=([^&#]*)/g,function($1,$2,$3){ obj[$2] = obj[$2] ? obj[$2]+","+$3 : $3; }); console.log(obj);
关键词: js,querystring,获取参数 编辑时间: 2013-11-12 16:38:01
0
高兴0
支持0
搞笑0
不解0
谎言0
枪稿0
震惊0
无奈0
无聊0
反对0
愤怒
50%(2)
50%(2)
- 中搜索:js实现QueryString功能
- 中搜索:js实现QueryString功能
- 暂无评论
文章图片 article Pictrue
网友评论