Chrome下AJAX POST出現中文亂碼的問題

2022-03-16 05:43:53 字數 1057 閱讀 5765

最近做的乙個後台系統中,前後端都使用介面通訊,並且為了保證開發進度,確保只相容新式瀏覽器,chrome、firefox。

結果在chrome瀏覽器中,在處理ajax向後台提交資料表單資訊時,出現中文的地方,post到後端的都是亂碼。

先確保所有的js、html模板檔案、以及合併、壓縮後的js檔案都是utf-8編碼模式,但是還是不行。

遂在構造post的引數的時候,手動加上了:

很不幸,chrome還是不給力,仍舊有亂碼,看了下開發人員工具中的請求頭如下:

好奇怪的content-type,為什麼這個header被設定了兩次,而且連線到了一塊兒??

又翻開底層的tangram ajax請求邏輯:

發現,在post方式的情況下,content-type會被設定兩次,貌似tangram有那麼一點瑕疵,作者在編寫這裡的時候,可能會想,瀏覽器在傳送這個post請求的時候,設定兩次相同的header,後者就會覆蓋前者。但是實際上在個別版本的chrome中,兩次被疊加了,遂修改之:

繞過第二次的設定,再次嘗試,發現沒有中文亂碼了,同時請求頭也正確了:

結論:1,chrome的版本更迭太快,不同版本之間,可能存在細微特性的差別,因為,在另乙個同事的chrome中,可以設定兩次content-type,後者會覆蓋前者,而不會拼接;

2,tangram的post請求方式中,設定content-type的方式存在一點小瑕疵,不應該被設定兩次;

Ajax POST請求應用

post 請求過程中,都是採用請求體承載需要提交的資料。open 方法的第乙個引數的作用就是設定請求的 method xhr.open post add.php xhr.setrequestheader content type 需要提交到服務端的資料可以通過 send 方法的引數傳遞 格式 key...

ajax post方式 精講

假如現在有這樣乙個表單,是新增元素用的。form id addform action useradd.action type post label for uname 使用者名稱 label input type text name uname id uname br label for mobil...

ajax post 請求415 400 錯誤

今天用ajax 向後台傳送 post請求時,出現了兩個問題 在設定請求頭的時候,還知道了原來第乙個引數 content type 是不區分大小寫的,寫成 content type 也是可以的。當然,設定請求頭還要注意以下問題 1,它必須在open 方法之後,send 方法之前呼叫,否則會拋錯。2,如...