我有这段代码
<%=out.write("<input
type=\"hidden\"
id=\"tid\"
value=\""+request.getParameter("id").toString()+"
\"/>")%>
<script type="text/javascript">
getPage(document.getElementById("tid").value)
</script>
此代码创建一个隐藏字段,其值来自
<site root>/viewPage.jsp?id=erwdf
url并将此隐藏字段的值传递给jsp函数。当我在Tomcat上运行此代码时,它给出了一个错误
我在上面给出的JSP代码行上的JspWriter类型中的方法print(boolean)不适用 参数(void)
。所以我做错了什么或者有没有其他方法将GET参数传递给JavaScript函数?我不太了解Javascript刚开始学习它。
答案 0 :(得分:3)
为什么如此过于复杂的隐藏字段?
只做
getPage('<%=request.getParameter("id")%>');
或者更简单,使用EL
getPage('${param.id}');
您可能只想通过Apache Commons Lang StringEscapeUtils
转义特殊JS字符,否则只要参数值包含单引号或任何其他特殊JS字符,生成的JS代码就可能会中断。
getPage('<%=StringEscapeUtils.escapeJavaScript(request.getParameter("id"))%>');
或者在EL中
getPage('${util:escapeJS(param.id)}');
答案 1 :(得分:2)
我认为您的意思是<%out.write
而不是<%=out.write
关于评论中的另一个问题,这将有助于getPage并执行报价转义,其他特殊字符......
<script type="text/javascript">
getPage("<% try {
out.write(URLEncoder.encode(request.getParameter("id").toString(), "UTF-8"));
} catch (Exception e) {
} %>")
</script>
答案 2 :(得分:2)
您不必将其存储在隐藏字段中以从js访问它。您可以从文档位置读取它。我个人使用这样的方法从我的网址中获取GET参数。
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
var id = getUrlVars()['id'];