encodeURIComponent()不编码空格
Javascript encodeURIComponent() not encoding spaces
我有一个带有id txtPlace的文本输入的表单,用户将在其中输入将作为url查询传递给服务器的输入。我试图使用encodeURIComponent(),但它不是编码空间。这是我的简化代码
<div class="searchBoxRow">
<input type="text" id="txtPlace" size="55" placeholder="Enter place to search"/>
<a href="#" id="btnSearch">Search</a>
</div>
这是我的javascript
<script type="text/javascript">
$(function () {
$('#btnSearch').on('click', function (e) {
e.preventDefault;
var place = encodeURIComponent($('#txtPlace').val());
var url = "http://example.com?place=" + place;
document.location.href = url;
});
});
</script>
如果用户输入ACME Co.,New York, NY,生成的url是
http://example.com?place=ACME Co.%2CNew York%2C NY
看到空格是未编码的吗?我甚至试图添加place = place.replace(/'s/g, '+')
,但编码后似乎不起作用。我做错了什么?谢谢你的帮助。
更新:
怪Firefox !发现空格被正确编码,但是Firefox没有显示编码的空格,即使它们是。在Internet Explorer 10和Google Chrome中测试,它们都以编码格式显示空格。谢谢Adam的小提琴http://jsfiddle.net/VYDcv/
我不知道你看到了什么,但是encodeURIComponent
确实转义空格字符。
根据您的代码:http://jsfiddle.net/VYDcv/
如果你输入"Hello world",它会提醒你空格替换为%20
。
报警结果:http://example.com?place=Hello%20World
当你设置你的浏览器的document.location.href
,它可能会改变%20
回到地址栏的一个空间,但它正在被javascript转义。
对我来说这是一个简单的解决方案:
<script type="text/javascript">
$(function () {
$('#btnSearch').on('click', function (e) {
e.preventDefault;
var place = encodeURIComponent($('#txtPlace').val());
place=place.replace(" ", "+"); //or .replace(" ", "%20")
var url = "http://example.com?place=" + place;
document.location.href = url;
});
});
</script>
相关文章:
- 我如何找到一个句子中的所有空格并替换忽略它们
- Regex代码只允许一个空格
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 用空格替换下划线PHP
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 将地理编码结果转换为php变量以发布到mysql数据库
- 当没有文本输入聚焦时检测空格键按下
- 一个密码测试程序,如果存在空格,它会提醒用户
- 在谷歌应用程序脚本中转换为空格的制表符
- 如何将字符串拆分为字符,但在javascript中保留空格
- Jquery:如何获取所选选项全文(带空格)
- Json在完整日历中对数据进行了编码
- jQuery 编码 ajax 查询字符串中的空格
- 如何防止空格被 URL 编码为“javascript:”URL
- 有没有跨平台的方法可以将一个字符串编码为另一个没有空格的字符串,然后将其解码回来
- 编码URI(空格等)而不编码非ASCII字符
- JavaScript初学者:在函数中编码单独的空格字符有什么功能区别
- URL编码,以加号编码空格
- encodeURIComponent()不编码空格