将GET参数传递给JavaScript函数?

时间:2012-03-21 14:08:11

标签: javascript jsp methods parameters get

我有这段代码

<%=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函数?我不太了解Javascript刚开始学习它。

3 个答案:

答案 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'];