向URL添加参数 - 始终确保它放在其他参数之前

时间:2015-12-27 09:59:29

标签: jquery

我有一个脚本,当我通过向我的网址添加字符串来点击按钮时,我用它来切换两个布局。它工作得很好 - 但是我需要控制如何将param字符串插入到我的url中以使用过滤器,该过滤器还会向url添加字符串。

网址结构如下所示

/Computers/Desktops = loads gridcode
first click = /Computers/Desktops?param=list = loads listview
second click = /Computers/Desktops?param=grid = loads gridview

这很好用 - 但我的问题是我有一组过滤器,它们将字符串添加到url,这使我的布局开关无法正常工作。

示例:

first click = /Computers/Desktops?param=list = loads listview

我开始添加过滤器:

/Computers/Desktops?param=list&fss=2GB+SSD

这有效 - 但是当我更改布局时:

/Computers/Desktops&fss=2GB+SSD?param=grid

这里的paramstring是在filterstring之后插入的,这会破坏过滤。我需要在之前插入它:

 /Computers/Desktops?param=grid&fss=2GB+SSD

还有一个变量,有人可以在切换布局之前进行过滤:

/Computers/Desktops?fss=HP+2GB

现在切换布局:

/Computers/Desktops?fss=HP+2GB?param=list

此外,需要在过滤器字符串之前插入param。 / Computers / Desktops是动态的,并且根据类别也会发生变化。

我的剧本

$(function() {
    if (window.location.href.indexOf("param=list") > -1) {
        //listcode
    } else {
        //gridcode
    }
    $('.click').on('click', function() {
        console.log("Clicked");
        var url = window.location.pathname;
        var url = window.location.href;
        if (url.indexOf('?param=list') > -1) {
            url = url.replace("?param=list", "") + '?param=grid'
        } else {
            url = url.replace("?param=grid", "") + '?param=list'
        }
        window.location.href = url;
    });
});

1 个答案:

答案 0 :(得分:1)

您可以使用上述功能这样做:

 $('.click').on('click', function() {
var baseUrl =  window.location.href.split("?")[0];
var fss = getParametersByName("fss");
var params = getParametersByName("params");
if(params == "list") params = "grid"; else params = "list";
var newUrl = baseUrl+"?params="+params;
if((fss).length>0) newUrl = newUrl+"&fss="+fss;
window.location.href=newUrl;

}

function getParametersByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
    results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));}

从这里开始:How can I get query string values in JavaScript?已经提到过了。