Javascript encodeURIComponent()不编码空格

Mos*_*hua 15 html javascript

我有一个带有文本输入的表单,其中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>
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

如果用户键入ACME Co.,纽约,纽约,则生成的URL为

http://example.com?place=ACME Co.%2CNew York%2C NY

看到空间没有编码?我甚至尝试添加,place = place.replace(/\s/g, '+')但编码后似乎没有用.我究竟做错了什么?谢谢你的协助.

更新:

怪火狐!发现空间正在被正确编码,但Firefox并没有显示编码空间,即使它们是.在Internet Explorer 10Google Chrome中测试,它们都以编码格式显示空格.感谢Adam为小提琴http://jsfiddle.net/VYDcv/

Ada*_*her 9

我不确定你看到了什么,但encodeURIComponent确实逃脱了空间角色.

根据您的代码看到这个小提琴:http://jsfiddle.net/VYDcv/

如果您键入"Hello world",它将以a替换为空格提醒您%20.

警报结果: http://example.com?place=Hello%20World

当您设置浏览器时document.location.href,它可能会将%20背面更改为地址栏中的空格,但它正在被javascript转义.

  • _Adam_它一直在工作,我恰好正在使用**Firefox v.20**并且它没有将空格显示为已转义.使用**Internet Explorer 10**进行检查,并将其正确显示为已编码.谢谢 (3认同)