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