几种JavaScript接受URL参数的方法

1.
<script>
function request(key)
{
if(typeof(this)=="undefined")return false;
if(this.length>0)
{
var s = this.split("&");
for(var i in s)
{
var sp=s[i].split("=")
if(sp[0]==key)return(sp[1]);
}
return false;
}
else return false
}
function getAllKey()
{
if(typeof(this)=="undefined")return false;
var arr=new Array;
if(this.length>0)
{
var s = this.split("&");
for(var i in s)
{
var sp=s[i].split("=");
arr.push(sp[0]);
}
return arr;
}
else return false
}
String.prototype.request=request
String.prototype.getAllKey=getAllKey
//===================================================
var url=location.search.substr(1) //action=reply&forum=3&topic=1469
var arg=url.getAllKey()
alert(arg)
document.write("提交参数:"+arg)
for(var cou in arg )
document.write("<br>参数"+arg[cou]+"的值为:"+url.request(arg[cou])+"<br>")
</script>

2. http://xling.blueidea.com/archives/2006/1537.shtml

3.
function queryString( key ) {
        var href = window.location.search;
        var lhref = href.toLowerCase();

        var pos = lhref.indexOf( key + "=" );
        if (pos==-1) return null;

        var next = lhref.indexOf( "&", pos );
        var value = href.substring( pos + key.length + 1, (next==-1) ? 999 : next );

        return value;
}

4.
function getQueryString(queryStringName)
{
 var returnValue="";
 var URLString=new String(document.location);
 var serachLocation=-1;
 var queryStringLength=queryStringName.length;
 do
 {
  serachLocation=URLString.indexOf(queryStringName+"/=");
  if (serachLocation!=-1)
  {
   if ((URLString.charAt(serachLocation-1)=='?') || (URLString.charAt(serachLocation-1)=='&'))
   {
    URLString=URLString.substr(serachLocation);
    break;
   }
   URLString=URLString.substr(serachLocation+queryStringLength+1);
  }
 
 }
 while (serachLocation!=-1)
 if (serachLocation!=-1)
 {
  var seperatorLocation=URLString.indexOf("&");
  if (seperatorLocation==-1)
  {
   returnValue=URLString.substr(queryStringLength+1);
  }
  else
  {
   returnValue=URLString.substring(queryStringLength+1,seperatorLocation);
  }
 }
 return returnValue;
}
 
5.
function GetUrlParms()    
{
    var args=new Object();   
    var query=location.search.substring(1);//获取查询串   
    var pairs=query.split("&");//在逗号处断开   
    for(var   i=0;i
< pairs .length;i++)   
    {   
        var pos
=pairs[i].indexOf('=');//查找name=value   
            
if(pos ==-1)    continue;//如果没有找到就跳过   
            var argname
=pairs[i].substring(0,pos);//提取name   
            
var value =pairs[i].substring(pos+1);//提取value   
            
args[argname] =unescape(value);//存为属性   
    
}
    return args;
}


6.
<script type="text/javascript">
function $G(){
var Url=top.window.location.href;
var u,g,StrBack='';
if(arguments[arguments.length-1]=="#")
   u=Url.split("#");
else
   u=Url.split("?");
if (u.length==1) g='';
else g=u[1];

if(g!=''){
   gg=g.split("&");
   var MaxI=gg.length;
   str = arguments[0]+"=";
   for(i=0;i<MaxI;i++){
      if(gg[i].indexOf(str)==0) {
        StrBack=gg[i].replace(str,"");
        break;
      }
   }
}
return StrBack;
}
</script>

上边个函数可以放在外部js文件、head、body等未知皆可
使用参考:
例:想获取URL http://fhuang.com/?ip=202.201.0.137 中IP这个参数的内容
<script type="text/javascript">
var IP=$G("IP")
//之后你可以将IP用来alert、write等,总之可以最为一个变量随便使用了
</script>


写ajax的时候可能会为了防止页面刷新并且再刷新的时候页面不会跳到其他页面
有人可能会通过改变书签来传递参数
如: http://..../xxx/#a=sds&b=111
想获取b的值可以用$G("b","#")  前边是需要获取的内容后便使通过#方法获取

这个函数绝对是原创,相当于在asp中用的 request("..")或php中的$_GET("..")
之前看过一些别人写的,总觉的不好用,呵呵
如果有什么不明白的可以留言~

http://blog.fhuang.com/blog/article.asp?id=288

7.
  • <script type= "text/javascript">
  • <!--
  • function getQueryString ( name )
  • {
  • // 如果链接没有参数,或者链接中不存在我们要获取的参数,直接返回空
  • if (location. href. indexOf ( "?" )== -1 || location. href. indexOf ( name+ '=' )== -1 )
  • {
  • return '';
  • }
  •  
  • // 获取链接中参数部分
  • var queryString = location. href. substring (location. href. indexOf ( "?" ) +1 );
  •  
  • // 分离参数对 ?key=value&key2=value2
  • var parameters = queryString. split ( "&" );
  •  
  • var pos, paraName, paraValue;
  • for ( var i= 0; i<parameters. length; i++ )
  • {
  • // 获取等号位置
  •         pos = parameters [i ]. indexOf ( '=' );
  • if (pos == -1 ) { continue; }
  •  
  • // 获取name 和 value
  •         paraName = parameters [i ]. substring ( 0, pos );
  •         paraValue = parameters [i ]. substring (pos + 1 );
  •  
  • // 如果查询的name等于当前name,就返回当前值,同时,将链接中的+号还原成空格
  • if (paraName == name )
  • {
  • return unescape (paraValue. replace ( //+/g, " " ) );
  • }
  • }
  • return '';
  • };
  •  
  • //http://localhost/test.html?aa=bb&test=cc+dd&ee=ff
  • alert (getQueryString ( 'test' ) );
  • //-->
  • </script>


  • 8.
  • <script type= "text/javascript">
  • <!--
  • function getQueryStringRegExp ( name )
  • {
  •     var reg = new RegExp ( "(^|//?|&)"+ name + "=([^&]*)(//s|&|$)", "i" );  
  •     if (reg. test (location. href ) ) return unescape (RegExp.$ 2. replace ( //+/g, " " ) ); return "";
  • };
  •  
  • //http://localhost/test.html?aa=bb&test=cc+dd&ee=ff
  • alert (getQueryStringRegExp ( 'test' ) );
  • //-->
  • </script>
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值