代码之家  ›  专栏  ›  技术社区  ›  Puru

刷新包含JSP代码段的DIV元素

  •  2
  • Puru  · 技术社区  · 14 年前

    我有一个JSP页面,我在其中读取会话中设置的会话属性。

    我想定期读取会话属性。我不想重新加载整个页面,我只是将JSP会话读取属性保存在我的DIV中,并尝试重新加载DIV,但它并没有重新加载DIV。

    这是我的代码库:

    <html>
      <head>
      // Loading CSS and Script files
      </head>
      <body>
        <div id="loadData" style='display:none;'>
             <% 
               String strStatus = String.valueOf(session.getAttribute("Status")) ;
              %>
        </div>
      </body>
      <script type="text/javascript">
        var reqStatus = '<%= strStatus %>';
    
        $(this).load(function(){
           setInterval(function() {
                $("#loadData").load();
              } ,1000);
         });
         $("#loadData").load(function(){
            if(reqStatus == 'Done') {
            // My Code goes here..
            }
         });
    </html>
    

    也欢迎有更好的想法。

    3 回复  |  直到 10 年前
        1
  •  2
  •   David Tang    14 年前

    JSP在服务器上呈现一次,然后发送给客户端,之后Java代码什么也不做。如果希望在不同的时间/频率上加载它们,则不能将HTML/JavaScript代码和Java代码都放在同一文件中。

    将其放入单独的.jsp文件中:

    <%= String.valueOf(session.getAttribute("Status")) ; %>
    

    假设它映射到某个URL /checkStatus.jsp

    删除loaddata分区,因为您不再需要它。将您的javascript替换为:

    var reloadStatus = function () {
        $.ajax("/checkStatus.jsp", function (data) {
            if (data == "Done") {
                // Your code here
            }
        });
    };
    
    setInterval(reloadStatus, 1000);
    
        2
  •  2
  •   Vivin Paliath    14 年前

    您的JSP代码只计算一次——当页面首次加载时。当JSP代码运行时,将生成HTML并发送到浏览器。您不能像这样“重新加载”一个DIV;JSP代码不会运行。

    您可以将JSP代码放入单独的文件中,然后使用 jQuery.load 要将该页加载到DIV中,请执行以下操作:

    jQuery(document).ready(function() {
       setInterval(function() {
           jQuery('#loadData').load('/status.jsp');
       }, 1000);
    }
    

    status.jsp 只包含一行:

    <%= String.valueOf(session.getAttribute("Status")) ; %>
    
        3
  •  1
  •   ExitToShell    14 年前

    JSP中的代码在结果HTML发送到浏览器之前被编译/执行。无法在呈现时重新加载页面的一部分并期望其更改。您可能需要创建一个隐藏的iframe并完全重新加载(简单),或者创建一个WebService来查询参数(困难)。