寫在前面: 最近在項目中,遇到一個問題,在點擊一個超鏈接時,頁面報錯。通過瀏覽器調試就可以知道發送的請求參數是不完整的,因為參數中含有特殊字元。所以就報錯啦~~ 原代碼,不能正確發送含有特殊字元的參數: 其中k_projectname中是含有特殊字元的,比如#,在發送請求的時候就不能被識別,需要對其 ...
寫在前面:
最近在項目中,遇到一個問題,在點擊一個超鏈接時,頁面報錯。通過瀏覽器調試就可以知道發送的請求參數是不完整的,因為參數中含有特殊字元。所以就報錯啦~~
原代碼,不能正確發送含有特殊字元的參數:
<a href="<%=request.getContextPath()%>/kmsDisplayModifyMappingAction.do?mapping_id=<%=kmdb.getMapping_id()%>&k_projectname=<%=kmdb.getK_projectname()%>&projectcode=<%=kmdb.getProjectcode()%>" >modify</a>
其中k_projectname中是含有特殊字元的,比如#,在發送請求的時候就不能被識別,需要對其進行轉義。
修改後的代碼:
<script type="text/javascript"> /* 超鏈接請求特殊字元轉換 */ function formatSpecial(mapping_id,k_projectname,projectcode){ //alert(k_projectname); var str = escape(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()方法進行轉義替換,在處理完成之後,再發送請求就好啦~~~~~