使用jquery从xsl transform刷新表内容

时间:2015-08-17 09:32:18

标签: jquery html xml xslt

我正在尝试使用xsl转换从xml服务状态更新数据并将数据附加到表中 如您所见,我使用xsl:value-of从xml文件中提取所需的数据。这些数据随时间变化,因此最终会发生变化。

desired table 这是一个示例表格式

我尝试使用.load() jquery函数但它没有创建所需的效果,它使用来自svc:data1的数据来破坏表结构。

我想要的是使用xsl转换接收的数据更新表的每个单元格而不刷新页面。有什么想法吗?

xsl:variable可以帮助将数据存储在其他地方吗?

示例代码:

<header>
  <script>
    function autoRefresh()
    {
      <!-- do something here -->
      $("#tbl").load(window.location.href);
    }

    setInterval('autoRefresh()', 2000);
  </script>
</header>

<body onLoad="autoRefresh()">
  <table id="tbl" border="1">
    <tr>
      <td>
        <b>Text1</b>
        <p>
          <xsl:value-of select="svc:data1"/>
        </p>
      </td>
      <td>
        <b>Text2</b>
        <p>
          <xsl:value-of select="svc:data2"/>
        </p>
      </td>
      <td>
        <b>Text3</b>
        <p>
          <xsl:value-of select="svc:data3"/>
        </p>
      </td>
    </tr>
  </table>
</body>

1 个答案:

答案 0 :(得分:1)

首先,我认为您不需要刷新页面,因为JS是一种动态语言。只需对要更新的元素进行分类或标识:

<body onLoad="autoRefresh()">
   <table id="tbl" border="1">
       <tr>
           <td>
              <b>Text1</b>
              <p id="p1">
              </p>
           </td>
           <td>
               <b>Text2</b>
               <p id="p2">
               </p>
           </td>
           <td>
               <b>Text3</b>
               <p id="p3">
               </p>
           </td>
           </tr>
     </table>
</body>

然后你应该定期调用服务并请求数据:

<script>
     (function service() {
         $.ajax({
             url: 'ajax/test.html', 
             success: function(data) {
                  $('#p1').html("<xsl:value-of select=\""+data["svc:data1"]"\"/>");
                  $('#p2').html("<xsl:value-of select=\""+data["svc:data1"]"\"/>");
                  $('#p3').html("<xsl:value-of select=\""+data["svc:data1"]"\"/>");
             },
             complete: function() {
                  // Schedule the next request when the current one's complete
                  setTimeout(service, 2000);
             }
         });
      })();

</script>

在这里,您可以定期查看ajax请求的示例:

How to fire AJAX request Periodically?