如何设置从javascript到JSP的变量值?

时间:2017-06-15 15:55:19

标签: javascript java jsp

我需要根据数据库中的数据存储动态绘制表。当加载第一个网页(validator.jsp)时,它会转到dataBase并返回一个名为cert的ArrayList。 (证书有描述,价值等)。

 <% java.util.ArrayList<Certificate> cert = OperacionesVidaDollars.getCertificates();%>

在页面完成加载之后,调用javascript函数(函数drawCertificates)。此函数将绘制与ArrayList具有的证书一样多的表。

  <script type="text/javascript">
  window.onload = drawCertificates;

        function drawCertificates(){
            alert("page finish loading, staring to draw certificates");
            var i;
            for(i=0;i<<%=cert.size()%>;i++){
                createTable(i);

                }
            }
    </script>

正如你在函数create table中看到的那样,变量 text 可以根据 i

进行更改
text = document.createTextNode("<%=cert.get(i).getDescription()%>");

为了更新该变量 i ,我首先调用JSP setVariable,更新计数器,然后尝试在getDescription中使用它,如:

text = document.createTextNode("<%=cert.get(request.getAttribute("count")).getDescription()%>");

我有这个setVariable.jsp

    <% 

int num = Integer.valueOf(request.getParameter("number"));
request.setAttribute("count", num);
request.getRequestDispatcher("VidaDollarsCC.jsp").forward(request, response);

Cookie cookie = new Cookie("countCookie",String.valueOf(num));
cookie.setMaxAge(60*60*24);
response.addCookie(cookie);
    %>

在其他JSP(validator.jsp)中,我有这个javascript函数,它应该更改变量值。

function setVariable(number){
alert("setting the number " + number);
    var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {

        }
        xmlhttp.open("POST", "setVariable.jsp", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send("number="+number);


}

在同一个jsp(validator.jsp)中我有这个函数来创建表(uniqID),我需要根据uniqID更新数字,因为我有一个ArrayList,它有一些我想要显示的信息。 / p>

function createTable(uniqID){

    setVariable(uniqID);    
    text = document.createTextNode("<%=cert.get(request.getAttribute("count")).getDescription()%>");


    }

但是没有用。有人知道为什么吗?我该如何解决?如果你有其他我可以实现的想法,这也会很棒。

1 个答案:

答案 0 :(得分:1)

我假设您的AJAX通话已成功将"[0-9.,€]*"发送至number

1)您必须意识到AJAX呼叫是一个不同的请求,与您在setVariable.jsp页面中的请求不同。

2)您无法从Javascript编写JSP表达式并将其解析为HTML,因为您的JSP需要由服务器端重新处理。

要回答有关如何解决此问题的问题,我们首先需要知道您要做的事情。

<强>更新

1)看起来validator.jspuniqID是相同的数字。为什么不在您的javascript中使用count

2)为什么不将证书描述传递到uniqID。像这样:

createTable

这里的要点是您需要将所有必要的数据写入HTML才能在JavaScript中使用它,您无法从JavaScript访问 <% java.util.ArrayList<Certificate> cert = OperacionesVidaDollars.getCertificates(); StringBuilder jsCerts = new StringBuilder("["); boolean first = true; for (Certificate cr : certs){ if (!first) jsCerts.append(","); first = false; jsCerts.append("\"").append( cr.getDescription() ).append("\""); } jsCerts.append("]"); %> <script type="text/javascript"> window.onload = drawCertificates; function drawCertificates(){ alert("page finish loading, staring to draw certificates"); var certArray = <%=jsCerts.toString()%>; var i; for(i=0;i<certArray.length;i++){ createTable(i, certArray[i]); } } </script> function createTable(uniqID, desc){ setVariable(uniqID); text = desc; } 属性。