最近在项目中,遇到一个问题,在点击一个超链接时,页面报错。通过浏览器调试就可以知道发送的请求参数是不完整的,因为参数中含有特殊字符。所以就报错啦~~
原代码,不能正确发送含有特殊字符的参数:
<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()方法进行转义替换,在处理完成之后,再发送请求就好啦~~~~~