#&q=car&category=Car%20Audio%2CAccessories&brand=

我从先前在SO上提出的问题中借用了此函数:
function insertParam(key, value)
{
key = escape(key); value = escape(value);

var kvp = document.location.hash.substr(1).split('&');

var i=kvp.length; var x; while(i--)
{
    x = kvp[i].split('=');

    if (x[0]==key)
    {
            x[1] = value;
            kvp[i] = x.join('=');
            break;
    }
}

if(i<0) {kvp[kvp.length] = [key,value].join('=');}

//this will reload the page, it's likely better to store this until finished

document.location.hash = kvp.join('&');
}

我这样使用它:
    insertParam("category",xy);
    insertParam("brand",zy);

我的问题是它正在将逗号解码为%2C。我知道我可以处理服务器端的字符,但是如何使用javascript使它看起来很漂亮?确切地说,我的意思是用逗号替换%2c。

最佳答案

decodeURIComponent(foo)是您要寻找的东西。

编辑:误读了您的问题。

在键和值上使用replace(/&/g, "%26").replace(/=/g, "%3D")而不是escape可以做到这一点。

这3个函数encodeURIencodeURIComponentencode都不适用于此任务,因为它们要么编码逗号,要么不编码&=

10-07 14:08