在ajax提交數據時,由於中文全角字符等等問題導致服務器端接收到後顯示亂碼,具體表現爲:\u00000\u000023等等(我本身想還原一下錯誤場景,盡然出現不了了,等下次在出現的時候,我在把亂碼貼出來,下面具體講解決方法):
細節原因不解釋,自己可以去百度
亂碼:
var n = $("#id").html();
$.ajax({
type: 'post',
dataType: 'json',
url: '/',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data: n,
success: function(data) {
console.log(data);
}
});
解決後:
var n = $("#id").html();
var _n = encodeURIComponent((encodeURI(n, "UTF-8")));
$.ajax({
type: 'post',
dataType: 'json',
url: '/',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data: _n,
success: function(data) {
console.log(data);
}
});
其實就加了encodeURIComponent encodeURI
在服務器端解碼:
decodeURI(decodeURIComponent(escape(bodys)), "UTF-8")
順便記錄一下js在encode之後post提交到nodejs後端的時候,nodejs報413錯誤,其實修改方法很簡單,修改下面兩行即可(50m是不是有點大呀......):
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));