我正在编写一个表单来发送一个GET请求,其中包含用户在表单中选择的参数。在这些字段之一中,用户必须选择具有+符号的值的包。这是一个形式:
<form name="creahost" method="get" enctype="application/x-www-form-urlencoded" action="*********.php">
<input type="radio" name="setupName" value="Mail+1GB+15boxes" checked> Mail 1GB | 15 boxes</input><br>
当按下提交按钮并将GET请求发送到服务器时,URL如下所示:http://**********.php?[...]&setupName=Mail%2B1GB%2B15boxes&[...]
如何告诉浏览器它正在撰写的网址必须是+而不是%2B?
谢谢!
答案 0 :(得分:0)
%28
是您在网址中表示加号的方式。文字+
将被解码为空格。
听起来你真正的问题是你的服务器端代码没有正确处理URL并且无法解码百分比编码字符。你应该在那里解决问题。
如果您真的想强制使用此客户端(这是一个糟糕的主意),那么您必须在JavaScript中重建整个表单处理过程。
YourForm.addEventListener("submit", submit_with_improper_plus_encoding);
function submit_with_improper_plus_encoding(event) {
event.preventDefault();
var form = this;
var query = "";
for (var i = 0; i < elements.length; i++) {
var el = elements[i];
if (el.disabled) {
continue;
}
if (el.name == "") {
continue;
}
if ((el.type == "checkbox" || el.type == "radio") && !el.checked) {
continue;
}
query += encodeURIComponent(el.name) + "=" + encodeURIComponent(el.value) + "&";
}
query = query.replace(/%2B/g, "+")
location = "*********.php?"+ query;
}
以上内容并未考虑正确包含点击提交按钮的数据。