通过AJAX的jQuery XML:偶尔会丢失一些节点

时间:2012-01-02 23:30:40

标签: jquery xml ajax flot

我有一个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>

这并不总是发生。如果我一直刷新页面,它可能会丢失一些节点,然后整个事情就会出现,等等。并且它也不总是被丢弃的节点。

我很感激任何提示。

1 个答案:

答案 0 :(得分:0)

正如@MArk所建议的,问题出在XML生成上。处理XML文件的微芯片处理器使用堆栈,当同时对服务器进行多次点击时会导致一些错误。发生这种情况时,处理后续中断而不完全处理当前操作。这是找到的,并且已修复,现在xml很好。