Javascript 将%20的JS append参数自动更改为空格

Javascript 将%20的JS append参数自动更改为空格,javascript,backbone.js,coffeescript,Javascript,Backbone.js,Coffeescript,你好,evry one我正在使用backoneJs和coffeeScript,试图传递一个已编码的参数,但在浏览器中,它将FireFox中的“%20”更改为空格(encodeURIComponent): 返回:www.website.com/page1?type=两个单词 我希望它是:www.website.com/page1?type=2%20字 有什么想法吗:)实际上,您的代码看起来不错,如果您使用encodeURIComponent函数,它会将所有空格变成%20,如下所示: var foo

你好,evry one我正在使用backoneJs和coffeeScript,试图传递一个已编码的参数,但在浏览器中,它将FireFox中的“%20”更改为空格(encodeURIComponent):

返回:www.website.com/page1?type=两个单词

我希望它是:www.website.com/page1?type=2%20字


有什么想法吗:)

实际上,您的代码看起来不错,如果您使用
encodeURIComponent
函数,它会将所有空格变成
%20
,如下所示:

var foo= "hello world";
encodeURIComponent foo
> "hello%20world"
type = "two words"
path ='/page1?type='+(encodeURIComponent type).replace(new RegExp(" ", "g"), "%20")
// "/page1?type=two%20words"                   ^ here you force the replacement of spaces
因此,在您的代码中,
encodeURIComponent
也将替换空格:

type = "two words"
path ='/page1?type='+encodeURIComponent type
// "/page1?type=two%20words"

backbone.history.navigate path, trigger: false
如果您遇到了一些错误,那么不是因为这个代码段,而是在代码的另一部分发生的

顺便说一句 如果您遇到
encodeURIComponent
函数的一些问题,您可以始终使用
.replace()
方法强制替换空格,如下所示:

var foo= "hello world";
encodeURIComponent foo
> "hello%20world"
type = "two words"
path ='/page1?type='+(encodeURIComponent type).replace(new RegExp(" ", "g"), "%20")
// "/page1?type=two%20words"                   ^ here you force the replacement of spaces

这是您在浏览器中看到的,但实际上是
%20
。另外,代码应该更像是一个工作片段,不应该包含
SyntaxErrors
@DavidThomas我正在使用CoffeeScript-encodeURIComponent(type)encodeURIComponenttype@DavidThomasOP正在与CoffeeScript合作,因此,他的语法是正确的。@coding\u idiot此代码在chrome上工作,而不是在Firefox上。当您希望看到一个
%20
时,您到底在哪里看到空格?在控制台里?调试器?浏览器的URL栏?不,先生,这段代码在chrome和safari中运行良好,而不是在firefox的newset版本中!!!谢谢你的回答,我只有在firefox中才有这个pb,我必须用“+”替换每个空格,以避免在firefox中出现空格url@nasser如果我的答案解决了你的问题,考虑把它标记为正确的,让人们(同样麻烦)更容易找到它。顺便说一句,不客气。不,先生,如果你让firefox尝试一个包含%20的url,你会发现我不知道Watca说什么,这并不能解决我的问题。。。您的问题与此代码段以外的内容有关