使用jquery从xsl转换刷新表内容
我正在尝试使用xsl转换从xml服务状态更新数据,并将数据附加到表中。使用jquery从xsl转换刷新表内容,jquery,html,xml,xslt,Jquery,Html,Xml,Xslt,我正在尝试使用xsl转换从xml服务状态更新数据,并将数据附加到表中。 如您所见,我使用xsl:value of从xml文件中提取所需的数据。这些数据在时间上是可变的,因此最终会发生变化 这是一个示例表格式 我尝试使用.load()jquery函数,但没有产生预期效果,它使用svc:data1中的数据破坏了表结构 我想要的是使用xsl transform接收的数据更新表的每个单元格,而不刷新页面。有什么想法吗 xsl:variable是否有助于将数据存储到其他位置 示例代码: <hea
如您所见,我使用
xsl:value of
从xml文件中提取所需的数据。这些数据在时间上是可变的,因此最终会发生变化
这是一个示例表格式
我尝试使用
.load()
jquery函数,但没有产生预期效果,它使用svc:data1
中的数据破坏了表结构
我想要的是使用xsl transform接收的数据更新表的每个单元格,而不刷新页面。有什么想法吗
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>
函数autoRefresh()
{
$(“#tbl”).load(window.location.href);
}
setInterval('autoRefresh()',2000);
文本1
文本2
文本3
首先,我认为您不需要刷新页面,因为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>
文本1
文本2
文本3
然后,您应该定期呼叫服务并请求数据:
<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({
url:'ajax/test.html',
成功:功能(数据){
$('#p1').html(“”);
$('#p2').html(“”);
$('#p3').html(“”);
},
完成:函数(){
//在当前请求完成时安排下一个请求
设置超时(服务,2000年);
}
});
})();
在这里,您可以定期看到ajax请求的示例:
在我看来,您需要使用XHR技术来更新页面的各个部分。有无数种方法可以做到这一点,我不知道XSLT是否适合这项工作。我的第一个猜测是改为使用JSON。@Abel XHR是我想使用的另一个可能的选项,idk,可能更简单。我需要强制使用XML-XSLT,所以JSON不是解决方案。谢谢你的评论。这只做了一点修改。我将
数据
作为一个XmlObject接收,并使用XMLDOM进行处理,因此这比使用xsl:value of
和其他任何东西都要简单。谢谢你,安德烈斯。