猿问

如何添加或更新查询字符串参数?

如何添加或更新查询字符串参数?

对于javascript,如果不存在,如何将查询字符串参数添加到url,或者如果存在,则更新当前值?我正在使用jQuery进行客户端开发。



潇湘沐
浏览 600回答 3
3回答

杨魅力

我编写了以下功能,实现了我想要实现的目标:function updateQueryStringParameter(uri, key, value) {   var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");   var separator = uri.indexOf('?') !== -1 ? "&" : "?";   if (uri.match(re)) {     return uri.replace(re, '$1' + key + "=" + value + '$2');   }   else {     return uri + separator + key + "=" + value;   }}

米脂

我扩展了这个解决方案,并将它与另一个我发现的替换/更新/删除基于用户输入并考虑URL锚点的querystring参数组合起来。不提供值将移除参数,提供值将添加/更新参数。如果没有提供URL,就会从window.Location抓取它。function UpdateQueryString(key, value, url) {     if (!url) url = window.location.href;     var re = new RegExp("([?&])" + key + "=.*?(&|#|$)(.*)", "gi"),         hash;     if (re.test(url)) {         if (typeof value !== 'undefined' && value !== null)             return url.replace(re, '$1' + key + "=" + value + '$2$3');         else {             hash = url.split('#');             url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');             if (typeof hash[1] !== 'undefined' && hash[1] !== null)                  url += '#' + hash[1];             return url;         }     }     else {         if (typeof value !== 'undefined' && value !== null) {             var separator = url.indexOf('?') !== -1 ? '&' : '?';             hash = url.split('#');             url = hash[0] + separator + key + '=' + value;             if (typeof hash[1] !== 'undefined' && hash[1] !== null)                  url += '#' + hash[1];             return url;         }         else             return url;     }}
随时随地看视频慕课网APP
我要回答