对于终端用户来说,表单提交的过程很不便,在某种程度上相当于输出数据,点击提交按钮。然而,从工程的角度来看,它须要一种编码机制能力牢靠地将这些数据从客户端发送和接管到服务器端以进行后端解决。
应用 JavaScript 发送 form data,应用 PHP 作为服务器端接管,则 JavaScript 端须要应用 encodeURIComponent()
进行解决。
表单提交最罕用的 HTTP 办法是 POST。然而,对于幂等的表单提交,咱们也能够应用 HTTP GET 办法。并且,指定办法的形式是通过表单的办法属性。
对于应用 GET 办法的表单,整个表单数据作为查问字符串 (query string
) 的一部分发送。然而,如果咱们应用 POST 办法,那么它的数据将作为 HTTP 申请注释 (body
) 的一部分发送。
而且,在后一种状况下,咱们还能够通过表单的 enctype 属性来指定数据的编码方式,该属性能够取两个值,别离是application/x-www-form-urlencoded
和 multipart/form-data
。
HTML 表单的 enctype 属性的默认值为 application/x-www-form-urlencoded
,因为它解决了数据齐全是文本的根本用例。然而,如果咱们的用例波及反对文件数据,那么咱们将不得不用 multipart/form-data 的值笼罩它。
实质上,它将表单数据作为键值对发送,并由 &
字符分隔。此外,相应的键和值用等号 (=
) 分隔。此外,所有保留字符和非字母数字字符都应用百分比编码进行编码。
看上面的代码:
// url encode your string
var string = encodeURIComponent('+'); // "%2B"
// send it to your server
window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B