繁体   English   中英

将GET参数传递给JavaScript函数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM