[英]Pass a GET parameter to a JavaScript function?
我有这个代码
<%=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上运行此代码时,它给出了一个错误
JspWriter类型的方法print(boolean)不适用于参数(void)
在我上面给出的JSP代码行上。 那么,我做错了什么吗?是否有其他方法可以将GET参数传递给JavaScript函数? 我对Java语言了解不多,刚开始学习它。
为什么对隐藏字段如此复杂?
做就是了
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)}');
我相信您的意思是<%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>
您无需将其存储在隐藏字段中即可从js访问它。 您可以从文档位置阅读它。 我个人使用这样的方法从URL中获取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'];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.