【问题标题】:Refreshing a DIV element which has JSP code snippet inside刷新包含 JSP 代码片段的 DIV 元素
【发布时间】:2023-03-30 11:21:02
【问题描述】:

我有一个 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>

也欢迎任何更好的想法。

【问题讨论】:

    标签: javascript jsp html reload


    【解决方案1】:

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

    把它放到一个单独的 .jsp 文件中:

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

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

    删除 loadData div,因为您不再需要它。将您的 javascript 替换为:

    var reloadStatus = function () {
        $.ajax("/checkStatus.jsp", function (data) {
            if (data == "Done") {
                // Your code here
            }
        });
    };
    
    setInterval(reloadStatus, 1000);
    

    【讨论】:

      【解决方案2】:

      您的 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")) ; %>
      

      【讨论】:

      • 我试过这个并且在 vista 机器上的 Firefox 和 IE 中工作得很好。但不能在 Windows 7 操作系统上的 IE 8 中工作。那么,在 Win 7 OS 上的 IE 8 中工作时,我还需要考虑其他任何事情吗?
      • @Multiplexer 我认为不会。 vista机器上的IE是什么版本?
      • 我在 Vista 和 Windows 7 机器上都使用 IE 8。
      【解决方案3】:

      JSP 中的代码在生成的 HTML 发送到浏览器之前被编译/执行。您不能重新加载部分呈现的页面并期望它发生变化。您可能需要制作一个隐藏的 iframe 并完全重新加载(简单),或者制作一个 Web 服务来查询参数(更难)。

      【讨论】:

      • 如何“完全”重新加载 iframe ?
      猜你喜欢
      • 2014-02-06
      • 2012-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 2012-10-23
      • 2016-04-11
      • 1970-01-01
      相关资源
      最近更新 更多