不积跬步,无以至千里

Html页面中字符的转义


最近开发任务调度的页面,遇到个问题涉及到Html页面中字符的转义,记录下解决方案 首先后端和页面交互的变量是json格式,可能包含单引号,双引号,也包含大括号,如{"key":"value"},{'key':'value'}

页面展示

使用jstl函数:<c:out value="${executeParam}"></c:out>

传参:<c:set var="param11" value="${fn:escapeXml(executeParam)}"/>

通过escapeXml函数可以把参数中的Http请求头中不支持的字符做转义,从而使得变量可以通过url做传递

对特殊字符做转义:url = "url?param=" + encodeURIComponent(param);

代码示例

<td>
    <input style="height:360px ;width: 360px; " size=65 type="text" name="param"
         id="param"
         value="<c:out value="${param}"></c:out>"/>
</td>
<script>
    function func() {
       var param = document.getElementById("param").value;
        $.ajax({
            type: "POST",
            url: "/url",
            data: {param: param},
            dataType: "text",
            async: true,
            success: function (data) {
                alert(data);
                window.close();
            },
            error: function (data) {
                alert(data);
            }
        })
    }
</script>

<c:set var="param11" value="${fn:escapeXml(param)}"/>
<input type="button" onclick="execute('${param11}')">
<script type="text/javascript">
    function execute(param) {
        url = "url?param=" +param;
        WinOpen(url, 14, 'execute');
    }
</script>