DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JS解決url傳值出現中文亂碼的另類辦法
JS解決url傳值出現中文亂碼的另類辦法
編輯:關於JavaScript     

 在開發web應用時,很多情況都需要進行前後台的數據交互,有時候我們可能需要把前台的中文數據通過URL的方式傳遞到後台,但此時有個令人頭疼的問題,因為Java中網絡傳輸使用的標准字符集是ISO-8859-1,所以在後台用request.getParameter("message");獲取前台傳過來的中文時,得到的還是ISO-8859-1字符集,中文就會出現亂碼現象,好多人的解決辦法是在前台傳遞中文之前進行decode,後台再decode一下進行轉換,這樣感覺很是麻煩,難道就沒其他的方式解決嗎?

       苦思冥想了一下:為什麼用表單的方式就可以傳遞中文,而URL的方式就不行了呢?非得用URL傳值的方式才能解決問題嗎?這裡我想到了動態表單,何不用它來解決呢,示例如下:

       假設有如下應用場景:KPI列表頁面中,對每個KPI都有生成預警數據的功能,當點擊列表中每個KPI生成數據的按鈕時,需要把KPI的id和name傳遞到後台。

       前端對應的js方法:

         用URL傳值的寫法:
復制代碼 代碼如下:
           function createData(indexId,indexName){
                     window.location.href="catalogAction.do?action=CreateIndexData&catalogId="+indexId+"&catalogName="+indexName+"&random="+Math.random();

                   }

用這種方法,由於KPI名稱大多為中文,在後台接收到的值肯定為亂碼。

若用動態生成表單的方式就可以解決:
復制代碼 代碼如下:
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();
}

對中文字段用form的方式提交過去,不是中文的仍然用URL傳,這樣就輕松解決了向後台傳遞中文出現亂碼的情況。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved