ser*_*nni 4 javascript variables jsp escaping slash
有JSP变量 ${remoteFolder}
它的价值是\\ file-srv\demo
使用此JSP中嵌入的jQuery.
jQuery将${remoteFolder}变量解析为\ file-srvdemo,即删除一个斜杠.
如何保持这个变量的初始值?
编辑:当${remoteFolder}在form标签内使用时,它解决了OK.
edited2:
JS部分JSP,斜杠被剥离了..
<script>
var oScript = document.createElement("script");
oScript.type = "text/javascript";
oScript.text = "var $j = jQuery.noConflict();";
oScript.text+= "$j(document).ready(function(){";
...
oScript.text+= "'script':'<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}',";
...
oScript.text+= "});";
document.body.appendChild(oScript);
</script>
Run Code Online (Sandbox Code Playgroud)
edited3:
早期使用${remoteFolder}var,用斜杠都可以<form enctype ="multipart/form-data"method ="post"target ="uploadFrame"action ="<%= request.getContextPath()%>/uploadFile?portletId = $ {portletId}&remoteFolder = $ {remoteFolder}">
这里有两个问题.
首先,它\是JS字符串中的转义字符.当你想\在JS字符串中表示一个时,你需要对它进行双重转义:\\.最简单的方法是使用JSTL fn:replace.
var jsVariable = "${fn:replace(javaVariable, '\\', '\\\\')}";
Run Code Online (Sandbox Code Playgroud)
其次,您希望将其作为URL参数发送.这\是URL参数中的非法字符.您需要对其进行URL编码.最简单的方法是使用Javascript的escape()功能.
var urlParameter = escape(jsVariable);
Run Code Online (Sandbox Code Playgroud)
总结一下,
oScript.text+= "'script':'<%= request.getContextPath() %>/uploadFile?portletId=${portletId}&remoteFolder=${remoteFolder}',";
Run Code Online (Sandbox Code Playgroud)
需要被替换
oScript.text += "'script':"
+ "'${pageContext.request.contextPath}/uploadFile"
+ "?portletId=${portletId}"
+ "&remoteFolder=" + escape("${fn:replace(remoteFolder, '\\', '\\\\')}")
+ "',";
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用/而不是\文件路径分隔符.这在Windows中也很完美.您无需转义它们以便在字符串中使用,但您仍然需要对其进行URL编码.
oScript.text += "'script':"
+ "'${pageContext.request.contextPath}/uploadFile"
+ "?portletId=${portletId}"
+ "&remoteFolder=" + escape("${remoteFolder}")
+ "',";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5375 次 |
| 最近记录: |