在这方面我需要一点帮助,我正在尝试使用Ajax构建仪表板,该仪表板分析XML文件中的数据并将其显示在表/仪表板上。我想要类似的东西,如果XML数据发生变化,它也应该(实时)反映在网站上/无需重新加载页面。我尝试了一些与setInterval()函数相关的技巧,但它只是复制了整个结果并继续这样做。.下面是我尝试从中使用的ajax脚本和xml。 XMl的文件名为XMLFile.xml。我的Xml内容很少。.假设如果第一个属性说的是DNSStatus从“ OK”更改为“ NOTOK”,则绿色刻度应更改为红叉,实时显示,并且也无需刷新整个页面。
<script language="javascript" type="text/javascript">
var CheckImage = "<img src= 'images/check.png' height=''20 width='20'>";
var CrossImage = "<img src= 'images/cross.png' height=''20 width='20'>";
$.ajax({
type: 'GET',
url: 'XMLFile.xml',
dataType: 'xml',
cache: false,
success: function (xml) {
$(xml).find("URLs").each(function ()
{
var Sitename = $(this).find('ProdURL').attr('ProdHost')
var URLType = $(this).find('ProdURL').attr('URLType')
var DNSStatus = $(this).find('ProdURL').attr('DNSStatus')
var TargetStatus = $(this).find('ProdURL').attr('TargetStatus')
var TTL = $(this).find('ProdURL').attr('TTL')
var SSL = $(this).find('ProdURL').attr('SSL')
var Force = $(this).find('ProdURL').attr('Force')
showData(Sitename, URLType, DNSStatus, TargetStatus, TTL, SSL, Force);
});
$(xml).find("URLs").each(function () {
var Sitename = $(this).find('RootURL').attr('RootHost')
var URLType = $(this).find('RootURL').attr('URLType')
var DNSStatus = $(this).find('RootURL').attr('DNSStatus')
var TargetStatus = $(this).find('RootURL').attr('TargetStatus')
var TTL = $(this).find('RootURL').attr('TTL')
var SSL = $(this).find('RootURL').attr('SSL')
var Force = $(this).find('RootURL').attr('Force')
showData(Sitename, URLType, DNSStatus, TargetStatus, TTL, SSL, Force);
});
$(xml).find("URLs").each(function () {
var Sitename = $(this).find('WorkingURL').attr('WorkingHost')
var URLType = $(this).find('WorkingURL').attr('URLType')
var DNSStatus = $(this).find('WorkingURL').attr('DNSStatus')
var TargetStatus = $(this).find('WorkingURL').attr('TargetStatus')
var TTL = $(this).find('WorkingURL').attr('TTL')
var SSL = $(this).find('WorkingURL').attr('SSL')
var Force = $(this).find('WorkingURL').attr('Force')
showData(Sitename, URLType, DNSStatus, TargetStatus, TTL, SSL, Force);
});
$(xml).find("URLs").each(function () {
var Sitename = $(this).find('ModuleURL').attr('ModuleHost')
var URLType = $(this).find('ModuleURL').attr('URLType')
var DNSStatus = $(this).find('ModuleURL').attr('DNSStatus')
var TargetStatus = $(this).find('ModuleURL').attr('TargetStatus')
var TTL = $(this).find('ModuleURL').attr('TTL')
var SSL = $(this).find('ModuleURL').attr('SSL')
var Force = $(this).find('ModuleURL').attr('Force')
showData(Sitename, URLType, DNSStatus, TargetStatus, TTL, SSL, Force);
});
$(xml).find("URLs").each(function () {
var Sitename = $(this).find('Moduleurl').attr('ModuleHost')
var URLType = $(this).find('Moduleurl').attr('URLType')
var DNSStatus = $(this).find('Moduleurl').attr('DNSStatus')
var TargetStatus = $(this).find('Moduleurl').attr('TargetStatus')
var TTL = $(this).find('Moduleurl').attr('TTL')
var SSL = $(this).find('Moduleurl').attr('SSL')
var Force = $(this).find('Moduleurl').attr('Force')
showData(Sitename, URLType, DNSStatus, TargetStatus, TTL, SSL, Force);
});
$(xml).find("URLs").each(function () {
var Sitename = $(this).find('VanityURL').attr('VanityHost')
var URLType = $(this).find('VanityURL').attr('URLType')
var DNSStatus = $(this).find('VanityURL').attr('DNSStatus')
var TargetStatus = $(this).find('VanityURL').attr('TargetStatus')
var TTL = $(this).find('VanityURL').attr('TTL')
var SSL = $(this).find('VanityURL').attr('SSL')
var Force = $(this).find('VanityURL').attr('Force')
showData(Sitename, URLType, DNSStatus, TargetStatus, TTL, SSL, Force);
});
$(xml).find("URLs").each(function () {
var Sitename = $(this).find('Vanityurl').attr('VanityHost')
var URLType = $(this).find('Vanityurl').attr('URLType')
var DNSStatus = $(this).find('Vanityurl').attr('DNSStatus')
var TargetStatus = $(this).find('Vanityurl').attr('TargetStatus')
var TTL = $(this).find('Vanityurl').attr('TTL')
var SSL = $(this).find('Vanityurl').attr('SSL')
var Force = $(this).find('Vanityurl').attr('Force')
showData(Sitename, URLType, DNSStatus, TargetStatus, TTL, SSL, Force);
});
}
});
function showData(Sitename, URLType, DNSStatus, TargetStatus, TTL, SSL, Force)
{
var TargetStatusImage;
if (TargetStatus === "OK")
{
TargetStatusImage = CheckImage;
}
else
{
TargetStatusImage = CrossImage;
}
var DNSStatusImage;
if (DNSStatus === "OK")
{
DNSStatusImage = CheckImage;
}
else
{
DNSStatusImage = CrossImage;
}
var SSLImage;
if (SSL === "OK")
{
SSLImage = CheckImage;
}
else
{
SSLImage = CrossImage;
}
$('#demo tbody').append('<tr><td>' + Sitename + '</td><td>' + URLType + '</td><td>' + DNSStatusImage + '</td><td>' + TargetStatusImage + '</td><td>' + TTL + '</td><td>' + SSLImage + '</td><td>' + Force + '</td></tr>')
}
</script>
输入文件示例
<?xml version="1.0" encoding="utf-8" ?>
<!--Website Status-->
<WebApplication>
<URLs>
<ProdURL ProdHost="www.wellington.ca" URLType="Prod" DNSStatus="OK" TargetStatus="OK" TTL="300" SSL="OK" Force="Yes" />
<RootURL RootHost="wellington.ca" URLType="Root" DNSStatus="OK" TargetStatus="NotOK" TTL="3583" SSL="OK" Force="Yes" />
<ModuleURL ModuleHost="calendar.wellington.ca" URLType="Module" DNSStatus="OK" TargetStatus="OK" TTL="297" SSL="OK" Force="Yes" />
</URLs>
</WebApplication>
答案 0 :(得分:0)
设置数据public class Foo
{
[DisplayName(nameof(SelectedBar)),
Browsable(true)]
public Bar SelectedBar { get; set; } = null;
[Browsable(false)]
public List<Bar> Bars { get; set; } = new List<Bar>() { new Bar("Bar0"), new Bar("Bar1"), new Bar("Bar2") };
}
public class Bar
{
public string Name;
public Bar(string name) { Name = name; }
public override string ToString()
{
return Name;
}
}
时不必使用append
,而需要覆盖现有值。尝试使用$('#demo tbody').append()
。