寫在前面:
最近在項目中,遇到一個問題,在點擊一個超鏈接時,頁面報錯。通過瀏覽器調試就可以知道發送的請求參數是不完整的,因為參數中含有特殊字符。所以就報錯啦~~
原代碼,不能正確發送含有特殊字符的參數:
<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 = 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函數中進行轉義處理,將含有的特殊字符用replace()方法進行轉義替換,在處理完成之后,再發送請求就好啦~~~~~
其中/\"/g的意思是/pattern/,代表的是正則表達式的界定符號,\表示轉義,\"表示",g表示匹配所有的,不寫的話只回匹配替換第一個。
交流群:527038646 嘻嘻嘻