如何使用JS在URL中传递“#”?

时间:2012-10-12 17:30:24

标签: javascript

为什么在使用JS的URL中使用#时会返回''/ false?

var el = '#string with number character -> #'   
el = el.replace(/[']/g, ''');
el = el.replace(/[#]/g, ''');

xmlhttp.open("GET","process_add_article.php?&title=" + (el),true);
xmlhttp.send(); 

3 个答案:

答案 0 :(得分:0)

如果要在URL上编码字符串,可以使用本机方法:

var el = '#string with number character -> #'; 
el = encodeURI(el);

我不确定这会实现你想要的,但网址是:

xmlhttp.open("GET","process_add_article.php?&title=#string%20with%20number%20character%20-%3E%20#",true);

这意味着title参数为空,因为服务器将忽略散列(#)

答案 1 :(得分:0)

因为#指定了片段标识符。片段标识符完全是客户端实体,因此不会发送到服务器。有关该主题,请参阅Wikipedia

答案 2 :(得分:0)

您使用的是Numeric Character Reference而非Percent-Encoding的URI。

您可能希望改为使用encodeURIComponent

var el = '#string with number character -> #'; 
xmlhttp.open("GET", "process_add_article.php?&title=" + encodeURIComponent(el), true);
xmlhttp.send(); 

不要与不#+=字符编码的encodeURI混淆。