1. 程式人生 > >javaWeb超連結(href)請求-特殊字元處理

javaWeb超連結(href)請求-特殊字元處理

最近在專案中,遇到一個問題,在點選一個超連結時,頁面報錯。通過瀏覽器除錯就可以知道傳送的請求引數是不完整的,因為引數中含有特殊字元。所以就報錯啦~~

原始碼,不能正確傳送含有特殊字元的引數:

<a href="<%=request.getContextPath()%>/kmsDisplayModifyMappingAction.do?mapping_id=<%=kmdb.getMapping_id()%>&k_projectname=<%=kmdb.getK_projectname()%>&projectcode=<%=kmdb.getProjectcode()%>" >modify</a>

其中k_projectname中是含有特殊字元的,(官網:www.fhadmin.org) 比如#,在傳送請求的時候就不能被識別,需要對其進行轉義。

修改後的程式碼:

複製程式碼
<script type="text/javascript">
        /* 超連結請求特殊字元轉換 (官網:www.fhadmin.org) */
        function formatSpecial(mapping_id,k_projectname,projectcode){
            //alert(k_projectname);
            var str = k_projectname.replace(/\"/g,'%22').replace(/\#/g,'%23').replace(/\'/g,'%27').replace(/\?/g,'%3F').replace(/\&/g,'%26').replace(/\=/g,'%3D');
            
//alert(str2); location.href = "<%=request.getContextPath()%>/kmsDisplayModifyMappingAction.do?mapping_id="+mapping_id+"&k_projectname="+str+"&projectcode="+projectcode+""; } </script>
複製程式碼
<a href="javascript:void(0);" onclick="formatSpecial('<%=kmdb.getMapping_id()%>','<%=kmdb.getK_projectname()%>','<%=kmdb.getProjectcode()%>')">modify</a>

主要思路是在點選超連結之前,對需要傳遞的引數在js函式中進行轉義處理,這裡主要在js函式中用到了escape()函式,然後將含有的特殊字元用replace()方法進行轉義替換,在處理完成之後,再發送請求就好啦~~~~~