关键词

使用Post提交时须将空格转换成加号的解释

在使用POST方式提交表单的时候,浏览器默认会将表单数据按照key/value的形式进行编码,并以"application/x-www-form-urlencoded"的格式提交到服务器端。其中,key/value间以等号(=)连接,每组key/value间使用&符号分隔。因此,如果表单数据中存在空格等特殊字符,可能会导致数据被编码后出现错误,不能正常提交到服务器端。

为了解决这个问题,我们需要将表单数据中的特殊字符进行编码,通常是将空格替换为加号(+),或使用URL编码将其转义。具体来说,可以使用JavaScript中的encodeURIComponent()函数对表单数据进行编码处理,或者在前端HTML中添加"enctype"属性为"application/x-www-form-urlencoded"。

下面是两个示例,更详细的攻略请见下文代码块:

示例1:

假设我们需要提交一个包含空格的表单字段"full name",表单数据如下:

<form method="post" action="submit.php">
  <input type="text" name="full name" value="John Doe">
  <input type="submit" value="Submit">
</form>

在提交前我们需要用JavaScript中的encodeURIComponent()对表单数据进行编码,代码如下:

var formData = new FormData(document.querySelector('form'));
for (var pair of formData.entries()) {
  pair[1] = encodeURIComponent(pair[1]).replace(/%20/g, '+'); //将%20替换为+号
  console.log(pair[0] + ', ' + pair[1]);
}

示例2:

还可以直接在表单中添加"enctype"属性为"application/x-www-form-urlencoded"来完成表单编码,代码如下:

<form method="post" action="submit.php" enctype="application/x-www-form-urlencoded">
  <input type="text" name="full name" value="John Doe">
  <input type="submit" value="Submit">
</form>

注意:如果在处理表单数据的后台接收代码中,需要将表单中提交的数据解码出来再进行处理。

本文链接:http://task.lmcjl.com/news/912.html

展开阅读全文