近年來,在前端開發(fā)中最常用的一個技術(shù)莫過于jQuery。而jQuery通過調(diào)用JSON數(shù)據(jù)來渲染網(wǎng)頁的功能在實(shí)際項(xiàng)目開發(fā)中也被廣泛應(yīng)用。某些時候,我們在使用jQuery的過程中可能遇到JSON亂碼問題,這會導(dǎo)致數(shù)據(jù)無法正常顯示,秉著大家抱團(tuán)取暖的心態(tài),在這里分享一下我所遇到的問題及解決辦法。
$.ajax({ url: "test.php", dataType: "json", success: function(data){ // do something } });
在jQuery中,我們通常使用$.ajax()方法來異步獲取JSON數(shù)據(jù)。在上述代碼中,dataType參數(shù)用于指定預(yù)期從服務(wù)器返回的數(shù)據(jù)類型為json格式,那么我們該如何解決JSON數(shù)據(jù)亂碼問題呢?先看下這個問題產(chǎn)生的原因。
JSON數(shù)據(jù)的編碼方式有兩種,一種是ASCII編碼,一種是Unicode編碼。在前端我們最常見的則是UTF-8編碼。亂碼問題的產(chǎn)生通常是由于前后端數(shù)據(jù)傳輸?shù)木幋a方式不一致所致。下文將介紹解決方法。
$.ajax({ url: "test.php", dataType: "json", contentType: "application/json;charset=utf-8", success: function(data){ // do something } });
如上代碼,我們可以在$.ajax()中新增一個contentType參數(shù),用于設(shè)定請求數(shù)據(jù)時的編碼方式,這里我們設(shè)定為UTF-8編碼。當(dāng)然,在后端(PHP)也需要進(jìn)行編碼轉(zhuǎn)換,并設(shè)置content_type為application/json。如下:
header('Content-type: application/json;charset=utf-8'); echo json_encode($data, JSON_UNESCAPED_UNICODE);
以上代碼已經(jīng)可以解決JSON亂碼問題啦!相信對于這個問題困擾了你一段時間的開發(fā)者,看到此文后,肯定如此舒心,如釋重負(fù)。