js截取url问号前面_JS获取URL中问号后面参数值

该功能已经在 ez.js 更好的实现,本文的方法依旧可用,但将不再更新。

ez.js 提供了一些常用的 js 方法。

支持以下几种传参的形式:

使用井号#:

http://x.x.com/x.html#id=1&name=Mukti

使用问号?:

http://x.x.com/x.html?id=1&name=Mukti

使用井号#并且不需要参数名直接带参数用中横线分隔:

http://x.x.com/x.html#1-Mukti-参数3-参数4

使用井号#并且不需要参数名直接带参数用左斜杠分隔:

http://x.x.com/x.html#1/Mukti/参数3/参数4

同时使用井号#和问号?:

http://x.x.com/x.html#id=1&name=Mukti?type=test&page=1

http://x.x.com/x.html#1-Mukti?type=test&page=1

下面是函数代码:

[code lang=”javascript”]

function getUrlParam(a,b,z){

/*

url = http://xxx.xxx.com/x.html#id-test?id=1&test=2

x.html#?

英文问号,均为空。

“#”在“?”前面才有效,否则只取到“#”

*/

if(window.location.href.indexOf("#") < 0 && window.location.href.indexOf("?") < 0){ window[a] = window[b] = {}; return; } var x = {}, y = {}; // 如果“#”后面有内容,那么按“?”分开,否则h[0] = ”, h[1] = ” var h = window.location.href.split("#")[1] ? window.location.href.split("#")[1].split("?") : [null, window.location.href.split("#")[0].split("?")[1]]; var n = h[1] ? h[1].split("&") : ""; if(h[0] && h[0].indexOf("=") > 0){

var m = h[0].split("&");

for(var i=0;i

var l = m[i].split("=");

x[l[0]] = l[1];

}

}else{

var m = h[0] ? h[0].split(z) : ”;

for(var i=0;i

x[i] = m[i];

}

}

for(var i=0;i

var l = n[i].split("=");

y[l[0]] = l[1];

}

window[a] = x;

window[b] = y;

}

[/code]

使用方法:

getUrlParam()接受三个参数:

第一个参数假设我们传的是G,那么会将井号#后面的参数赋值给对象G(注意这个G将会是window全局对象,大家不要出现命名冲突),比如url中#id=1&name=Mukti,那么我们就可以通过G[‘id’]或者G.id来取得id的值,同理,用G.name取得name的值。

第二个参数假设我们传的是P,那么会取得?后面的参数,比如url中?id=1&name=Mukti,我们可以使用P.id取得id的值。

第三个参数是井号#后面参数省略了参数名的时候使用什么样的分隔符。比如url中#1-Mukti-参数3,那么我们第三个参数就要使用中横线“-”,即getUrlParam(“G”,”P”,”-“),这样我们可以通过G[1],G[2],G[3],分别取得1,Mukti,参数3这三个值。通用你可以使用任意没有歧义的分隔符,比如“|”,url是这样:#1|Mukti|param3,函数参数就要这么写:getUrlParam(“G”,”P”,”|”)。没有歧义,也就是说最好不要用“&”。

但是请注意:问号?后面是不能使用省略参数名的形式,比如?1/Mukti/param3,这样是错误的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值