基于资源存在的跳转循环

时间:2018-11-26 18:08:25

标签: javascript xml loops http-status-code-404

我想弄清楚我的头。我有一个员工的XML文件,照片存储在其他服务器中。我使用创建XML的SQL查询来构建URL。

我需要显示所有缺少照片的员工。

顺序读取XML的函数如下:

function updateBoard() {
  var html;
  xmlDoc = "";

  if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
  } else { // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  }

  xmlhttp.open("GET", "xml/no_photo.xml", false);
  xmlhttp.send();
  xmlDoc = xmlhttp.responseXML;

  var x = xmlDoc.getElementsByTagName("Row");
  html = '<br><table class="transp" align="center"><tbody><tr><td valign="top"><div class="tbl_head_bright">Foto</div></td></td><td valign="top"><div class="tbl_head_bright"># Empleado</div></td><td><div class="tbl_head_bright">Nombre</div></td><td valign="top"><div class="tbl_head_bright">Departamento</div></td></tr>';

  for (i = 0; i < x.length; i++) {
    var img = new Image();
    img.onerror = function() {
      html += '<tr><td><span class="dchange_bright"> MISSING </span></td>';
      html += '<td><span class="dchange_bright">' + empid + '</span></td>';
      html += '<td class="left"><span class="dchange_bright">' + Nombre + '</span></td>';
      html += '<td class="left"><span class="dchange_bright">' + department + '</span></td></tr>';
    }

    img.src = x[i].getElementsByTagName("url")[0].childNodes[0].nodeValue
    var Nombre = x[i].getElementsByTagName("nombres")[0].childNodes[0].nodeValue + ' ' + x[i].getElementsByTagName("apellidos")[0].childNodes[0].nodeValue
    var empid = x[i].getElementsByTagName("emp_id")[0].childNodes[0].nodeValue
    var department = x[i].getElementsByTagName("departamento")[0].childNodes[0].nodeValue
  };

  html += '</tbody></table></div>'

  $('#mainboard').html(html);
}

这不起作用。它不会显示任何内容。控制台显示一堆404错误,这些错误是照片遗失,但什么也没有显示。

我尝试在onload事件上使用continue,但是会引发仅在循环中才允许继续的错误。我是谁,但显然位于函数内部会破坏逻辑。

我不是一个精通javascript的人,我还在学习并且还有很长的路要走,所以我缺少一些基本概念,例如循环和函数的工作方式以及整个逻辑的工作方式,所以请耐心等待我。

谢谢!

1 个答案:

答案 0 :(得分:0)

我使用ETL修复了此问题。无法找到通过js完成此操作的方法。