【问题标题】:Removing %20 value from get method从 get 方法中删除 %20 值
【发布时间】:2011-12-19 08:32:53
【问题描述】:

在 get 方法中删除 %20?

var c=new Array(a);    
(eg: a={"1","2"})  window.location="my_details.html?"+  c + "_";  

在 my_details.html 中:

var q=window.location.search;    
alert("qqqqqqqqqqqqq " + q);   
var arrayList = (q)? q.substring(1).split("_"):[];      
var list=new Array(arrayList);    
alert("dataaaaaaaaaaaa " +  list  + "llll " ); 

在“列表”中它让我感到沮丧"1%202";

如何删除这个%20 =space 值??

谢谢

【问题讨论】:

  • 您希望list 参数是什么? 1,2?

标签: javascript android get


【解决方案1】:

就用这个吧:

alert("dataaaaaaaaaaaa " +  decodeURIComponent(list)  + "llll " );

这应该将%20 解码为space

看这里:http://www.w3schools.com/jsref/jsref_decodeURIComponent.asp

【讨论】:

  • 请不要链接到 W3Schools。他们经常犯错。 (在该页面的中途,他们忘记了“组件”部分,而是开始折腾整个 URL,这并不是一个很好的例子,但却是 W3Schools 拥有的最好的页面之一)。
  • 你有比他们更好的来源吗?我实际上没有找到有更好示例的页面。
  • MDN 通常会更好,尽管在这种情况下它实际上是一个折腾:developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
  • 好的,这在某种程度上只是一个存根。但我会在其他帖子中考虑 MDN。我认为对于这种特殊情况,w3schools 最适合。
【解决方案2】:

如果参数中有空格,则需要%20(URL 编码)。您不能在 GET 请求中传递空格。

如果您需要避免这种情况,请使用POST

【讨论】:

  • 没有空间。我不知道 %20 是如何添加到那里的。我不能使用 POST。如何使用 GET 解决此问题?
  • @Sneha,我不确定这是为什么,但您可以使用 unescape(text) 函数将 %20 解码为实际空间。希望对您有所帮助。
  • unescape 已弃用。不要使用它。
  • @昆汀,哇!不知道。谢谢! :)
【解决方案3】:

据我所知,问题是在这一行引入的:

window.location="my_details.html?"+  c + "_";

这可以写成:

window.location="my_details.html?"+  c.toString() + "_";

JavaScript Array默认 .toString() 将使用, 的分隔符,即

var str = ["1", "2", "3"].toString(); // 1,2,3

在您的示例中,使用的分隔符似乎是空格。这将通过更改.toString()Array.prototype 上的默认行为来改变。尝试使用以下内容:

window.location="my_details.html?"+  c.join(",") + "_";

【讨论】:

    【解决方案4】:

    最好使用replace()方法将%20替换为space

    list.replace("%20"," ");

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      相关资源
      最近更新 更多