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