application/json和application/x-www-form-urlencoded都是表單數據發送時的編碼類型。
EncType:
enctype 屬性規定在發送到服務器之前應該如何對表單數據進行編碼。
默認地,表單數據會編碼為 "application/x-www-form-urlencoded"。就是說,在發送到服務器之前,所有字符都會進行編碼。

application/x-www-form-urlencoded編碼類型的發送和接收
窗體數據被編碼為名稱/值對
客戶端:
發送"test=I'm Egret",瀏覽器按F12,Network中查看發送數據

服務端:
1. 用file_get_contents拿Post數據。$_POST['test']取不到數據。
2. 然后使用json_decode解碼。 原始file_get_contents是字符串?
3. php中json訪問方式 $json->test。php中沒有{test:"I'm Client"}這種格式的,$json = {test:"I'm Client"}會報錯。
4. 返回數據時將數組json_encode編碼。php中json格式沒有,用數組代替。
使用json格式,php頭部需要加上如下代碼,否則會報錯。
header('Access-Control-Allow-Headers:x-requested-with,content-type');
application/x-www-form-urlencoded: 窗體數據被編碼為名稱/值對。這是標准的編碼格式。
multipart/form-data: 窗體數據被編碼為一條消息,頁上的每個控件對應消息中的一個部分。
text/plain: 窗體數據以純文本形式進行編碼,其中不含任何控件或格式字符。
form的enctype屬性為編碼方式,常用有兩種:application/x-www-form-urlencoded和multipart/form-data,默認為application/x-www-form-urlencoded。
當action為get時候,瀏覽器用x-www-form-urlencoded的編碼方式把form數據轉換成一個字串(name1=value1&name2=value2...),然后把這個字串append到url后面,用?分割,加載這個新的url。
當action為post時候,瀏覽器把form數據封裝到http body中,然后發送到server。
如果沒有type=file的控件,用默認的application/x-www-form-urlencoded就可以了。
但是如果有type=file的話,就要用到multipart/form-data了。瀏覽器會把整個表單以控件為單位分割,並為每個部分加上Content-Disposition(form-data或者file)、Content-Type(默認為text/plain)、name(控件name)等信息,並加上分割符(boundary)。
