2013-02-27 60 views
3

我知道你需要使用decodeURIComponent()的一些变体来做这样的事情,但由于我对编码和使用我在网上发现的一些代码仍然相当陌生,我不知道如何改变它以适应我的需求。从URL参数中删除%20

我所拥有的是一个函数,它可以从URL(其中有很多)中获取我需要的每个URL参数。我必须使用这些变量作为参数的其他功能,也可以在页面上显示,而且我不能让%20消失。

function getUrlVars() { 
      var vars = {}; 
      parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { 
      vars[key] = value; 
      }); 
      return vars; 
     } 

从哪里获得使用各个变数:

var markname = getUrlVars()["mname"]; 

我试图把decodeURIComponent()在该函数不同的地方,但我似乎无法得到它的工作。我也不确定它是否需要使用价值或变量。

value = decodeURIComponent(value); 

或者类似的东西...

任何帮助,将不胜感激!谢谢!

+0

什么是一个例子值是错误的(你想解码)? – 2013-02-27 00:44:32

+1

'decodeURIComponent()'是你正在寻找的。你能提供一个确切的问题的例子吗? – Corylulu 2013-02-27 00:46:16

+0

我的URL看起来是这样的: '的azazaz = 1h2pwR4ULN3GHAENYtww-gINXMgvxAaHBu5waliI与映射名称=测试jnumber = 1234&更新= 01/01/01标记= 3&MNAME =要显示与司机%20Reviver%20Locations' 因此,像司机齐磊定位需要吗?屏幕,并显示为Driver%20Reviver%20Locations。在某些情况下,这些变量需要插入函数中,而且我担心如果我不遏制所有最终会导致它自身崩溃的任何事情。 – 2013-02-27 00:55:53

回答

4

decodeURIComponent因为你发布应该可以正常工作。你还不如用空格代替加号,不要忘记将key解码,以及:

function getUrlVars() { 
    var url = window.location.href, 
     vars = {}; 
    url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) { 
     key = decodeURIComponent(key); 
     value = decodeURIComponent(value); 
     vars[key] = value; 
    }); 
    return vars; 
} 
+0

哦哇,非常感谢。我没有意识到我需要这样做。是否有理由将密钥和值都解码? – 2013-02-27 01:05:51

+0

我不能说它经常发生,但键当然可以包含编码字符。 – Bergi 2013-02-27 01:26:55

+0

谢谢@Bergi – AmanKumar 2018-01-13 13:22:39