簡體   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