如何在javascript中用<逗号>替换%2C?</逗号>

时间:2012-02-05 17:59:43

标签: javascript

 #&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。

3 个答案:

答案 0 :(得分:5)

这对我来说,在包含逗号的URI上撤消encodeURIComponent()

.replace(/%2C/g,",")

答案 1 :(得分:4)

我不知道为什么在之前的答案被删除了,但答案是正确的。

alert(decodeURIComponent('%2C'));

因此,您将查询字符串分解为元素,按&amp;分割符号。比将结果拆分为= symbol并对名称和值应用decodeURIComponent。

ps:key = escape(key); value = escape(value);你不应该在这里使用escape(对于不同的浏览器它是不同的。并且'不同'我的意思是IE)。使用encodeURIComponent。

pps:because they either encode commas or don't encode &= ???

alert(encodeURIComponent('&=,'));

输出%26%3D%2C

答案 2 :(得分:2)

decodeURIComponent(foo)是你要找的东西。

修改:误读了您的问题。

在密钥和值上使用replace(/&/g, "%26").replace(/=/g, "%3D")代替escape来执行此操作。

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