js方法智能给url传参数

原创 2015年11月18日 10:13:40

昨天写的一个js方法,感觉还不错


作用就是给url增加参数

举例说,我有个需求

我当前的url为 http://laocaiit.com/index.php?b=345

我想传个参数a ,值为123的话,那么我就直接在后面增加&a=123,可是如果我的url为http://laocaiit.com/index.php?a=1&b=345,那我就得先判断是否已有参数a了


方法如下,url为传入的url链接,name为参数名称,value为值,返回修改后的url,如果value为空的话,就会删除name这个参数

function setUrlParam(url,name,value) {
        var localUrl = url;        
        if(value!=null){
        	//增加或修改url参数
        	//判断URL是否带有?号
            if (localUrl.indexOf("?") < 0) {
            	//判断url是否有#
                var a=localUrl.indexOf("#");
                if(a<0){
                    return localUrl + "?" + name + "=" + value;
                }else{
                    return localUrl.substring(0,a)+"?"+name+"="+value+localUrl.substring(a);
                }
              
            } else {            
                var regex = new RegExp("([\\?&]" + name + "=)[^&#]*");        
                if (regex.test(localUrl)) {            
                    return localUrl.replace(regex, "$1"+value);
                }
                else {   
                    var a=localUrl.indexOf("#");
                    if(a<0){
                        return localUrl + "&" + name + "=" + value;
                    }else{
                        return localUrl.substring(0,a)+"&"+name+"="+value+localUrl.substring(a);
                    }                    
                }
            }
        }else{
        	//删除url的参数
            var regex = new RegExp("([\\?&])" + name + "=[^&#]*(&?)");        
            if (regex.test(localUrl)) { 
                return localUrl.replace(regex, function(m,p1,p2){
                	if(p1=="?"){
                		return p2=="&"?"?":"";
                	}else{
                		return p2;
                	}
                });
            }else{
            	return localUrl;
            }
            
        }
        
    }


版权声明:本文为博主原创文章,未经博主允许不得转载。

tp5中url使用js变量传参方法

window.location.href=”{:url(‘Index/index’)}>”+”/ID/”+ID; //这样可以生成,但url模式改变则不能用window.location.href=”...
  • haoaiqian
  • haoaiqian
  • 2017年03月17日 09:54
  • 5770

js url传参数编码问题

前台 在JS中需要转码2次,在后台在解码 conditions=encodeURI(conditions); conditions=encodeURI(conditions);//必须要转码2次...
  • maxiaokun55
  • maxiaokun55
  • 2014年10月24日 17:23
  • 431

JS传递参数拼接方法(map多个参数)

 直接代码: var msgDatas=queryData();//需要传递的参数     var str='';     for(var key in msgDatas){      ...
  • jinziweiwang
  • jinziweiwang
  • 2017年03月11日 16:20
  • 1610

JS通过Url传递中文参数,c#获取参数

最近遇到一个JS通过Url传递中文参数,c#获取中文参数乱码的问题。解决方法如下: 正确的方法是: JS var reqUrl = document.location + "?key=" + e...
  • x_yz_
  • x_yz_
  • 2015年07月08日 14:01
  • 1619

iOS调用js传参

1、需要在网页load完毕之后才能调用 - (void)webViewDidFinishLoad:(UIWebView *)webView { [self signInWithJs:5]; ...
  • xyxjn
  • xyxjn
  • 2014年12月29日 20:17
  • 4178

JS传值——获取URL及URL参数

1、js获取url很简单,代码如下: window.location.href; 其实只是用到了javascript的基础的window对象。 2、首先看看单纯的通过javascript是如何...
  • nowadaysall
  • nowadaysall
  • 2015年11月10日 16:15
  • 2839

解决:JS代码URL传中文参数乱码

如题:解决JS代码URL传中文参数乱码 方法和步骤: 传参数之前对中文的url参数进行 window.location = encodeURI(encodeURI("xxx.html?...
  • kepoon
  • kepoon
  • 2016年11月11日 20:25
  • 2806

url所传参数的加密

  • yinyiniao
  • yinyiniao
  • 2010年02月27日 22:28
  • 2725

JS定时器如何传递参数

JS定时器 传递参数我在使用setTimeout()或setInterval()时, setTimeout(addIcons(),3000); 或 setI...
  • mxt123456
  • mxt123456
  • 2017年05月04日 21:29
  • 971

html 之间如何通过URL传输参数,并解决中文乱码问题

首先先看一个HTML页面间传递参数的小例子:                              当在输入框中输入内容后,点击搜索,应用就会跳转到搜索页面,并传递了上一个页面搜索的内容“九”...
  • qq_30979185
  • qq_30979185
  • 2017年05月28日 19:31
  • 7917
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js方法智能给url传参数
举报原因:
原因补充:

(最多只允许输入30个字)