Передать параметр GET в функцию JavaScript? - PullRequest
1 голос
/ 21 марта 2012

У меня есть этот код

<%=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, он выдал ошибку как

Метод print (логический) в типе JspWriter не применим для аргументы (недействительны)

в строке кода JSP, которую я дал выше. Так что я делаю что-то не так или есть какой-нибудь альтернативный метод для передачи параметра GET в функцию JavaScript? Я не знаю много о Javascript, только начал изучать его.

Ответы [ 3 ]

3 голосов
/ 21 марта 2012

Почему так сильно усложнено скрытое поле?

Просто сделай

getPage('<%=request.getParameter("id")%>');

или проще, с EL

getPage('${param.id}');

Вы можете захотеть экранировать только специальные символы JS с помощью Apache Commons Lang StringEscapeUtils, в противном случае сгенерированный код JS может сломаться, если значение параметра содержит одинарную кавычку или любой другой специальный символ JS.

getPage('<%=StringEscapeUtils.escapeJavaScript(request.getParameter("id"))%>');

или когда в EL

getPage('${util:escapeJS(param.id)}');

Смотри также:

2 голосов
/ 21 марта 2012

Вам не нужно хранить его в скрытом поле, чтобы получить доступ к нему из js. Вы можете прочитать его с места нахождения документов. Я лично использую такой метод, чтобы получить параметры GET из моего URL.

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

2 голосов
/ 21 марта 2012

Я полагаю, вы имели в виду <%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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...