【问题标题】:Ajax XML Update every 10 secondsAjax XML 每 10 秒更新一次
【发布时间】:2019-12-13 00:02:51
【问题描述】:

我制作了一个 Ajax XML 脚本,它将打开一个 XML 文件,找到一个属性值并将其显示在一个 DIV 中。 由于 XML 文件经常更新,它将每 10 秒执行一次。

我遇到了一个问题,它会在几个小时后停止工作,我认为可能存在内存泄漏等问题,但我不确定,老实说,我什至不确定我是否正确循环它,建议会不胜感激。

function getXML() {
  $.ajax({
    type: "GET",
    url: "assets/alerts.xml",
    dataType: "xml",
    cache: false,
    success: function (xml) {

      var fireXML = $(xml).find('template').eq(0).attr("name");
      var lightXML = $(xml).find('template').eq(1).attr("name");

      var fire = new Array();
      fire['FIRE_CLEAR'] = "Clear";
      fire['FIRE_BLUE'] = "Blue";
      fire['FIRE_YELLOW'] = "Yellow";
      fire['FIRE_RED'] = "Red";
      var firealert = fire[fireXML];
      $('#firealert').html(firealert);

      var light = new Array();
      light['GLC_CLEAR'] = "Clear";
      light['GLC_BLUE'] = "Blue";
      light['GLC_YELLOW'] = "Yellow";
      light['GLC_RED'] = "Red";
      var lightalert = light[lightXML];
      $('#lightningalert').html(lightalert);

      setTimeout(getXML, 1000);
    }
  });
}

【问题讨论】:

  • 每秒执行一次,而不是每 10 秒执行一次
  • 没有按照之前评论的错误处理,你没有机会调试你的代码
  • 您似乎也误用了 JS 数组。我认为firelight应该是对象,即var fire = {}

标签: javascript html ajax xml


【解决方案1】:

一个问题是你不处理失败,所以你需要添加类似的东西:

error: function() {
           setTimeout(getXML, 1000);
       }

这将确保计时器在出错后重新启动。

【讨论】:

    猜你喜欢
    • 2013-12-06
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2012-05-09
    相关资源
    最近更新 更多