在javascript中使用逗号分隔符更新查询字符串

时间:2016-02-09 17:38:28

标签: javascript query-string

期待“stackoverflow”,我发现这有效:

function updateQueryStringParameter(uri, key, value) {
    var re = new RegExp("([?&])" + key + "=[^&#]*", "i");
    if (re.test(uri)) {
        return uri.replace(re, '$1' + key + "=" + value);
    } else {
        var matchData = uri.match(/^([^#]*)(#.*)?$/);
        var separator = /\?/.test(uri) ? "&" : "?";    
        return matchData[0] + separator + key + "=" + value;
    }
}
function removeQueryStringParameter(uri, key, value){
    var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
    var separator = uri.indexOf('?') !== -1 ? "&" : "?";
    if (uri.match(re)) {
        return uri.replace(re, '');
    }
}

它工作正常,但我需要类似的东西,唯一的区别是值由逗号或任何分隔符连接。例子:

  

www.google.com?key=1,2,3,4而不是key = 1& key = 2 ...

提前致谢!

1 个答案:

答案 0 :(得分:0)

这是我的脚本代码:

tjq('.servizio').click(function () {
        var servizio = tjq(this).data('id');
        var href = tjq(location).attr('href');
        if(tjq(this).parent().hasClass('active')){
            var url = removeQueryStringParameter(href, 'serv', encodeURIComponent(servizio));
            location.href = url;
        }else{
            var url = updateQueryStringParameter(href, 'serv', encodeURIComponent(servizio));
            location.href = href.url;
        }
    });

和html代码:

<a href="#" class="servizio" data-id="'.$filtroS['servizio'].'">'.$filtroS['servizio'].'<small>('.$filtroS['quanti'].')</small></a></li>';

我正在创建搜索过滤器。