JS解決url傳值出現(xiàn)中文亂碼的另類辦法
在開(kāi)發(fā)web應(yīng)用時(shí),很多情況都需要進(jìn)行前后臺(tái)的數(shù)據(jù)交互,有時(shí)候我們可能需要把前臺(tái)的中文數(shù)據(jù)通過(guò)URL的方式傳遞到后臺(tái),但此時(shí)有個(gè)令人頭疼的問(wèn)題,因?yàn)镴ava中網(wǎng)絡(luò)傳輸使用的標(biāo)準(zhǔn)字符集是ISO-8859-1,所以在后臺(tái)用request.getParameter("message");獲取前臺(tái)傳過(guò)來(lái)的中文時(shí),得到的還是ISO-8859-1字符集,中文就會(huì)出現(xiàn)亂碼現(xiàn)象,好多人的解決辦法是在前臺(tái)傳遞中文之前進(jìn)行decode,后臺(tái)再decode一下進(jìn)行轉(zhuǎn)換,這樣感覺(jué)很是麻煩,難道就沒(méi)其他的方式解決嗎?
苦思冥想了一下:為什么用表單的方式就可以傳遞中文,而URL的方式就不行了呢?非得用URL傳值的方式才能解決問(wèn)題嗎?這里我想到了動(dòng)態(tài)表單,何不用它來(lái)解決呢,示例如下:
假設(shè)有如下應(yīng)用場(chǎng)景:KPI列表頁(yè)面中,對(duì)每個(gè)KPI都有生成預(yù)警數(shù)據(jù)的功能,當(dāng)點(diǎn)擊列表中每個(gè)KPI生成數(shù)據(jù)的按鈕時(shí),需要把KPI的id和name傳遞到后臺(tái)。
前端對(duì)應(yīng)的js方法:
用URL傳值的寫(xiě)法:
function createData(indexId,indexName){
window.location.href="catalogAction.do?action=CreateIndexData&catalogId="+indexId+"&catalogName="+indexName+"&random="+Math.random();
}
用這種方法,由于KPI名稱大多為中文,在后臺(tái)接收到的值肯定為亂碼。
若用動(dòng)態(tài)生成表單的方式就可以解決:
function createData(indexId,indexName){
var urlStr = "catalogAction.do?action=CreateIndexData&PcatalogId=<c:out value='${catalogId}'/>&catalogId="+indexId+"&random="+Math.random();
var f= document.createElement('form');
f.action = urlStr;
f.method = 'post';
document.body.appendChild(f);
var temp=document.createElement('input');
temp.type= 'hidden';
temp.value=indexName;
temp.name='catalogName';
f.appendChild(temp);
f.submit();
}
對(duì)中文字段用form的方式提交過(guò)去,不是中文的仍然用URL傳,這樣就輕松解決了向后臺(tái)傳遞中文出現(xiàn)亂碼的情況。
相關(guān)文章
深入理解基于vue-cli的webpack打包優(yōu)化實(shí)踐及探索
這篇文章主要介紹了基于vue-cli的webpack打包優(yōu)化實(shí)踐及探索,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
關(guān)于COOKIE個(gè)數(shù)與大小的問(wèn)題
在一次面試過(guò)程中,面試官問(wèn)過(guò)我關(guān)于瀏覽器cookie的問(wèn)題包括:cookie大小,cookie個(gè)數(shù)限制以及如何操作cookie等一系列的問(wèn)題。2011-01-01
淺析JavaScript如何解決跨域問(wèn)題并手寫(xiě)一個(gè)jsonp
跨域是指瀏覽器為了安全性,實(shí)施的同源策略,同源策略要求,只有協(xié)議、域名和端口號(hào)完全相同的網(wǎng)頁(yè),才能共享資源,本文整理了一些常用的跨域解決方法,希望對(duì)大家有所幫助2024-03-03
超全面的JavaScript開(kāi)發(fā)規(guī)范(推薦)
作為一名開(kāi)發(fā)人員(WEB前端JavaScript開(kāi)發(fā)),不規(guī)范的開(kāi)發(fā)不僅使日后代碼維護(hù)變的困難,同時(shí)也不利于團(tuán)隊(duì)的合作,通常還會(huì)帶來(lái)代碼安全以及執(zhí)行效率上的問(wèn)題。本文就主要介紹了關(guān)于Javascript的命名規(guī)范、注釋規(guī)范以及框架開(kāi)發(fā)的一些問(wèn)題,需要的朋友可以參考學(xué)習(xí)。2017-01-01
使用Chart.js圖表庫(kù)制作漂亮的響應(yīng)式表單
數(shù)據(jù)包圍著我們。雖然搜索引擎和其他應(yīng)用都對(duì)基于文本方式表示的數(shù)據(jù)偏愛(ài)有加,但人們發(fā)現(xiàn)可視化是更容易理解的一種方式。今年初,SitePoint 發(fā)表了 Aurelio 的文章《 Chart.js簡(jiǎn)介》。在深入研究 Chart.js 的功能后,本文將會(huì)講解這篇簡(jiǎn)介的一些重點(diǎn)。2015-10-10
基于JavaScript實(shí)現(xiàn)交互式博客
在Web開(kāi)發(fā)中,JavaScript(JS)是一種至關(guān)重要的編程語(yǔ)言,它使網(wǎng)頁(yè)具有交互性,本文主要介紹了如何使用JavaScript實(shí)現(xiàn)一個(gè)交互式博客,需要的可以了解下2024-01-01

