1、字符串分割分析法
可以获取URL+?带QUESTRING参数,相当于asp的request.querystring,PHP的$_GET,代码简洁实用。
<script>
function GetRequest()
{
var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if(url.indexOf("?") != -1)
{
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++)
{
theRequest[strs.split("=")[0]]=unescape(strs.split("=")[1]);
}
}
return theRequest;
}
</script>
调用示例:
<script> var Request=new Object(); Request=GetRequest(); var 参数1,参数2,参数3,参数N; 参数1=Request['参数1']; 参数2=Request['参数2']; 参数3=Request['参数3']; 参数N=Request['参数N']; </script>
以此获取url串中所带的同名参数
二、正则分析法
function GetQueryString(name)
{
var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r!=null) return unescape(r[2]); return null;
}
alert(GetQueryString("参数名1"));
alert(GetQueryString("参数名2"));
alert(GetQueryString("参数名3"));
function fQueryString(sKey, bDecode, sLocationSearch, bDebug)
{/* shawl.qiu code, return string */
var Debug = bDebug;
if(!sLocationSearch) sLocationSearch = location.search;
if(!sKey) return sLocationSearch;
var sTemp = sLocationSearch.replace(/^?/,"");
if(Debug) alert(sTemp);
if(sTemp==""&&bDebug) throw new Error("页面 sLocationSearch 没有查询参数!");
var Ar = sTemp.split("&"), sFinal = "";
var iArLen = Ar.length, iArCount = 0;
//by www.jb200.com
while(iArCount++<iArLen)
{
if(Debug)
{
alert("Ar[iArCount-1].toLowerCase(): "+Ar[iArCount-1].toLowerCase());
alert("sKey.toLowerCase()+'=': "+sKey.toLowerCase());
}
var arQsByPart = Ar[iArCount-1].split("=");
if(arQsByPart[0].toLowerCase()==sKey.toLowerCase())
{
if(arQsByPart.length==1) continue;
sFinal = arQsByPart[1];
if(bDecode) sFinal = decodeURI(sFinal);
break;
}
}/* end while(iArCount++iArLen) */
if(sFinal==""&&bDebug) throw new Error("没有键为 "+sKey+" 的查询参数!");
return sFinal;
}/*end */