標籤:style class code ext color http
我們知道在通過POST方式向伺服器發送AJAX請求時最好要通過佈建要求頭來指定為application/x-www-form-urlencoded編碼類別型。知道通過表單上傳檔案時必須指定編碼類別型為"multipart/form-data"。而text/plain是我們在做純文字傳輸時防止接收資料時出現編碼混亂而設定的。可是我一直沒有搞清楚為什麼要這麼設定。後來查了些資料才找到了三者的區別。
application/x-www-form-urlencoded
這是通過表單發送資料時預設的編碼類別型。我們沒有在from標籤中設定enctype屬性時預設就是application/x-www-form-urlencoded類型的。application/x-www-form-urlencoded編碼類別型會把表單中發送的資料編碼為成對的名稱和數值。這是標準的編碼格式。當表單的ACTION為POST的時候,瀏覽器把form資料封裝到http body中,然後發送到伺服器。當表單的ACTION為GET的時候,application/x-www-form-urlencoded編碼類別型會把表單中發送的資料轉換成一個字串(name=coderbolg&key=php),然後把這個字串附加到URL後面,並用?分割,接著就請求這個新的URL。當我們通過POST方式向伺服器發送AJAX請求時最好要通過佈建要求頭來指定為application/x-www-form-urlencoded編碼類別型。方法是在xmlobject.open()方法之後添加
xmlobject.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
不然伺服器會接收不到POST過來的資料。
multipart/form-data
這個是專門用來傳輸特殊類型資料的,如我們上傳的非文本的內容,比片或者MP3等。multipart/form-data編碼類別型會把表單中的發送的資料編碼為一條訊息,頁面上每個表單控制項對應訊息中的一部分。當表單中有file類型控制項並希望它正常工作的話(廢話吧)就必須設定成multipart/form-data類型,瀏覽器會把整個表單以控制項為單位分割,並為每個部分加上Content-Disposition(form-data或者file),Content-Type(預設為text/plain),name(控制項 name)等資訊,並加上分割符(boundary)。
text/plain
資料以純文字形式進行編碼,其中不含任何控制項或格式字元。沒有什麼好說的。