我有一个flot图,它通过ajax
从XML文档中轮询数据。我使用模式:time for x axis
。它工作正常,除了间歇性地,xml Document
中的一些值被删除。以下是通过xml
提取ajax
的代码。
function graphUpdate() {
$.ajax( {
url: "EnergyDM.xml",
type:"GET",
dataType: "XML",
success: onxmlReceived,
error: function(xhr, textStatus, errorThrown)
{
alert(textStatus + ' ' + errorThrown);
}
});
// setTimeout(graphUpdate,10000);
}
function onxmlReceived(data) {
var xmlData = null;
//for Non IE Browsers
if(window.DOMParser) {
//xmlData = data;
parser = new DOMParser();
xmlData = parser.parseFromString(data, "text/xml");
}
// For IE
else {
xmlData = new ActiveXObject("Microsoft.XMLDOM");
xmlData.async = false;
xmlData.loadXML(data);
}
$(xmlData).find('energyDM').each(function(){
Rec_Count = parseInt($(this).find('edNum').text());
d1=[];
for(var i = 0; i < Rec_Count; i++) {
if(i < 10) {
d1.push([(parseInt($(this).find('et000'+i).text(),10))*1000,
parseFloat($(this).find('ed000'+i).text())]);
} else if(i < 100) {
d1.push([(parseInt($(this).find('et00'+i).text(),10))*1000,
parseFloat($(this).find('ed00'+i).text())]);
} else {
d1.push([(parseInt($(this).find('et0'+i).text(),10))*1000,
parseFloat($(this).find('ed0'+i).text())]);
}
}
plotWithOptions();
});
}
XML文件如下所示:
<energyDM>
<edNum>305</edNum>
<TMF>UTC </TMF>
<pm339> 1.271</pm339><!-- pm339 max energy demand value -->
<pm340>1325033716</pm340><!-- pm340 max energy demand occured time -->
<ed0000> 0.282</ed0000>
<et0000>1325545093</et0000>
<ed0001> 0.283</ed0001>
<et0001>1325544792</et0001>
<ed0002> 0.284</ed0002>
<et0002>1325544492</et0002>
...
<ed0305> 0.284</ed0305>
<et0305>1325544492</et0305>
</energyDM>
当返回的XML遗漏节点时,如果我使用Chrome查看值,则会显示如下内容:
<ed0023> 0.283</ed0023>
<et0023>1325538176</et0023>
<ed0024> 0.281</ed0024>
<et0024>1325537875</et0024>
<ed0035> 0.281</ed0035>
<et0035>1325534564</et0035>
<ed0036> 0.280</ed0036>
<et0036>1325534263</et0036>
这并不总是发生。如果我一直刷新页面,它可能会丢失一些节点,然后整个事情就会出现,等等。并且它也不总是被丢弃的节点。
我很感激任何提示。
答案 0 :(得分:0)
正如@MArk所建议的,问题出在XML生成上。处理XML文件的微芯片处理器使用堆栈,当同时对服务器进行多次点击时会导致一些错误。发生这种情况时,处理后续中断而不完全处理当前操作。这是找到的,并且已修复,现在xml很好。