使用`encodeURIComponent`编码URL不适用于表单操作

时间:2013-10-30 09:48:01

标签: javascript html

我刚注意到encodeURIform一起使用的这种行为。我使用encodeURI编码了一个网址。

<html>
<head>
</head>
<body>
<form id="form">
</form>
<button id="button">Click Me to submit form</button>
</body>
<script>
    var button = document.getElementById("button");
    button.onclick = function() {
        var form = document.getElementById("form");
        var url = "b.html?name=" + encodeURIComponent("First Name");
        form.action = url;
        form.method = "post";
        form.submit();
    }
</script>
</html>

在提交表单时,我没有得到我在浏览器地址栏中的预期。我在期待

b.html?name=First%20Name

我得到的是 -

b.html?name=First Name

有人可以告诉我为什么会这样吗?

注意 -

我只在firefox中遇到此问题(我使用的是24.0版本)。在Chrome上,它的行为符合预期。

由于

1 个答案:

答案 0 :(得分:2)

Firefox在URL栏中显示URL的解码版本,以便更容易为用户阅读。它仍然将编码的字符串发送到服务器。

此外,如果您复制URL栏的内容并将其粘贴到文本编辑器中,则会在其中包含编码字符。